2010-08-05 33 views
1

Rails ne peut pas charger (erreur 404) CSS & fichiers JS en production, mais n'a aucun problème les charger en développement.Rails erreur 404 pour les fichiers de feuille de style ou JavaScript

J'utilise Capistrano pour le déploiement et l'exécution Rails 3. Mon chemin sur le développement est /www/myapp mais mon chemin sur la production est /www/myapp/courant. L'application elle-même semble fonctionner correctement, donc le problème semble être isolé des fichiers CSS/JS.

J'ai essayé le réglage de la RAILS_ROOT variable /www/myapp/courant dans environnements/production.rb mais il n'a pas fait aucune différence, les fichiers encore ne pas charger.

est ici la pile complète du journal de production:

Started GET "/stylesheets/scaffold.css?1280867531" for 98.173.61.21 at 2010-08-04 17:04:05 -0700 

ActionController::RoutingError (No route matches "/stylesheets/scaffold.css"): 
/usr/local/rvm/gems/ruby-1.9.2-rc2/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/show_exceptions.rb:55:in `call' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/rack/logger.rb:14:in `call' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/runtime.rb:17:in `call' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `block in call' 
    <internal:prelude>:10:in `synchronize' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:145:in `call' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:642:in `process_client' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:715:in `block in worker_loop' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `each' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:713:in `worker_loop' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:604:in `block (2 levels) in spawn_missing_workers' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `fork' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:601:in `block in spawn_missing_workers' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `each' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:597:in `spawn_missing_workers' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:611:in `maintain_worker_count' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:270:in `start' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/lib/unicorn.rb:29:in `run' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/gems/unicorn-1.1.2/bin/unicorn:123:in `<top (required)>' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `load' 
    /usr/local/rvm/gems/ruby-1.9.2-rc2/bin/unicorn:19:in `<main>' 

Répondre

2

Le message d'erreur ressemble à votre application Rails est d'obtenir la demande d'un fichier statique. Rails 3 ne sert pas les fichiers statiques par défaut, car le serveur web peut faire beaucoup mieux. Vous devriez vérifier la configuration de votre serveur web. Il devrait être configuré pour regarder d'abord, si un fichier statique existe dans le répertoire public pour une requête et seulement transmettre la demande à l'application Rails, s'il n'y a pas de fichier statique.

Vous pouvez également activer Rails pour traiter également les fichiers statiques avec config.serve_static_assets = true dans config/environments/production.rb. Cependant, ceci n'est pas recommandé en production, car vous ne devriez pas gaspiller les ressources de traitement d'une application Rails juste pour servir des fichiers statiques. Il vaut mieux dire au serveur web de le faire.

+0

J'ai complètement oublié. Merci de l'avoir signalé. J'ai configuré nginx pour rechercher la licorne et il fonctionne maintenant parfaitement. Merci. – Marco