J'ai une application Rails que j'essaie de tester dans l'environnement de production. J'ai exécuté RAILS_ENV=production rake assets:precompile
ce qui a généré tous mes actifs dans / public / assets. Le problème est que lorsque je lance mon application avec RAILS_ENV=production rails s thin
:
ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):
Ce fichier existe cependant à /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css
.
Des pensées sur pourquoi je reçois ça RoutingError
?
la source
thin
sur ma machine de développement. Je compilais les actifs mais j'étaisapplication.css
vide et le journal du serveur a donné une erreur de l'OP.config.serve_static_files
.config.serve_static_assets
est obsolète et sera supprimé dans Rails 5.En plus de ce que Ryan a dit ci-dessus, le guide du pipeline d'actifs Rails décrit comment configurer Apache ou nginx pour servir les actifs statiques à votre place.
http://guides.rubyonrails.org/asset_pipeline.html
Vous devriez vraiment configurer nginx ou Apache pour servir les actifs statiques, car ils sont bien mieux optimisés pour cette tâche que mongrel / thin / unicorn.
la source
Juste résolu le même problème. Dans mon cas, la réponse de Ryan n'a pas été utile. Bratsche a souligné les guides de rails, malheureusement cela n'a pas fonctionné pour moi aussi. Cependant, la ressource a été utile. J'ai donc pris la configuration Nginx à partir de là et ajouté la directive racine , pointant vers le répertoire public. Sans cela, cela ne fonctionne pas.
Redémarrez nginx, et c'est tout.
la source
En effet, vous n'avez pas eu besoin de modifier les configurations par défaut. Vous venez de recompiler à nouveau le fichier de ressources .
supprimer public / actifs
compilation d'actifs
la source
Rails 4.2 a ajouté / modifié cette ligne dans vos fichiers config / environnements / staging.rb et production.rb:
Si RAILS_SERVE_STATIC_FILES n'est pas défini et que vous êtes des actifs de service de votre serveur Rails (comme avec Unicorn), alors il sera par défaut sur "false" et l'erreur RoutingError se produira.
C'est une reparation facile:
la source
Dans les rails 5, l'
config.serve_static_files
option a changé, donc maintenant vous devez avoirpour servir les actifs localement.
la source
essayez ci-dessous le code:
config / environnements / production.rb
puis exécutez la commande:
puis envoyez tous les fichiers de compilation et le fichier manifeste au serveur.
la source
J'utilise mina + puma + nginx pour déployer mon application Rails 5, j'ai
vérifier config / environnements / production.rb
NGINX gère déjà cela , configurez-le correctement
les choses fonctionneront bien.
la source
Si quelqu'un arrive ici avec la même erreur dans l'environnement de test que moi, voici ce qui m'a aidé:
puis:
trouver
spring server
processus et son PID puis le tuer via:la source