Bonjour,

je ne savais trop dans quelle catégorie mettre ce post.

Je suis sous Ruby 2.2.1p85; RVM 1.26.11; Rails 4.2.4; Nginx 1.8.0;

Mais j'ai un petit probleme et je ne comprends absolument pas pourquoi et surtout comment le résoudre.

Quand je me connecte sur mon serveur avec l'adresse IP et j'ai une page avec :

The page you were looking for doesn't exist.
You may have mistyped the address or the page may have moved.
If you are the application owner check the logs for more information.

Dans mon dossier application Rails, j'ai créé un controller home et model / controller pour posts. J'ai ajouter les lignes qu'il faut dans routes.rb

  resources :posts
  get 'create/index'
  get 'home/index'
  root :to => 'home#index'

mais si j'essais d'aller sur mon_adresse_ip/posts, j'ai la même erreur qu'au dessus. The page you were looking for doesn't exist.

Ce que j'arrive à faire c'est afficher une page html que j'ai rajouter dans le dossier public car dans mon conf/nginx.conf root pointe vers ce dossier.

http {
    passenger_root /usr/local/rvm/gems/ruby-2.2.1/gems/passenger-5.0.16;
    passenger_ruby /usr/local/rvm/gems/ruby-2.2.1/wrappers/ruby;
    include mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    # '$status $body_bytes_sent "$http_referer" '
    # '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen          80 default_server;
        rails_env       production;
        server_name     localhost 82.226.104.119;
        root            /home/amstramgram/www/public;

        passenger_enabled on;
    }
}

Je pense qu'il doit me manquer des informations sur comment accéder au bon dossier. J'ai suivi la documentation de passenger pour le root qui pointe vers le dossier public.

Ce que je ne sais pas c'est si je dois compiler des fichiers, car pour l'isntant je n'ai tester Rails qu'en local avec le port 3000 classique.

Mais la le serveur rails est en production. Je ne sais pas trop ce que ca change hors-mis ne pas charger certaine gems.

Désolé de prendre de votre temps,
merci.

2 réponses


kal-el
Réponse acceptée

L'environnement de production nécessite des paramètres supplémentaire par rapport à celui de développement. Il faut entre autre que tu :

  • Crée un secret à l'aide de la commande rake secret

    rake secret
    # => a9c11ee657e728bc203123ca45900be975c34dab2e6239343b0326202538a5cf70a0ba6ee8800a12b4c5647764a6c3e71780f153716b03021a44c69fffcf5dc3
    export SECRET_KEY_BASE=a9c11ee657e728bc203123ca45900be975c34...
  • Paramètre la connexion à la base de donnée de production.

  • Compile les assets :

    rake assets:precompile RAILS_ENV=production

Pour savoir quel est exactement ton problème, je te conseil de regarder dans les logs de production :

tail -f log/production.log

Je n'etais pas loin, j'avais la secret key, et les assets de compilés et je faisai un tail mais pas sur les log de production. Ce qui est bizarre c'est qu'il n'a pas afficher la bonne erreur. Il me manquait un template.

Si je passe par Metropolis, je t'offre une bière.
Merci.