29 votes

rails 3.1.3: essayer de fonctionner localement en production, le pipeline d'actifs ne fonctionne pas

Mon application fonctionne très bien, le mode de développement.

Quand je le lance en mode de production à l'aide de RAILS_ENV=production rails s aucun de mes .ou css .js fichiers chargés. (Je n'ai précompiler des actifs, à l'aide de RAILS_ENV=production bundle exec rake assets:precompile.)

Le webrick journal affiche:

ActionController::RoutingError (Pas de route matches [GET] "/assets/application-a73ce43be7bf75953cd0c60b2b4a7eb0.js"):

et

ActionController::RoutingError (Pas de route matches [GET] "/actifs/de l'application 986dd79830088c416c1632c12999ec69.css"):

Les fichiers ont été compilées (selon le journal\production.fichier journal) et mon public/assets ne montrent ces fichiers avec et sans les empreintes digitales:

ls public/assets
application-986dd79830088c416c1632c12999ec69.css
application-986dd79830088c416c1632c12999ec69.css.gz
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js.gz
application.css
application.css.gz
application.js
application.js.gz

47voto

Dylan Markow Points 65796

Les Rails ne sert pas statique actifs de production en mode par défaut. Si vous souhaitez désactiver cette et servir la statique des actifs, mise à jour de votre config/environments/production.rb le fichier avec ceci:

config.serve_static_assets = true

Le raisonnement derrière les Rails' configuration par défaut, c'est qu'il suppose que vous allez être en retard d'un serveur web standard en mode de production (Apache, Nginx, etc.) qui sera alors proxy les demandes à votre application Rails. Car les actifs sont précompilés, Apache/Nginx/etc. peut servir directement sans avoir besoin de parler à votre Rails de processus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X