Question Environnement de développement Rails ne met pas à jour HTML / css / assets même après le redémarrage du serveur


J'ai développé un site en rails, tout se passe relativement bien. Soudain, mes modifications des vues et des actifs ne sont plus visibles. Je change une feuille de style ou du HTML et recharge mon navigateur à http://0.0.0.0:3000 et rien ne change. Donc, je redémarre WEBrick et rien n'a encore changé. C'est même le cas si je change entièrement une image.

La seule façon d'obtenir les nouvelles modifications est de précompiler les ressources:

C:\Users\me\website>rake assets:precompile
C:/Ruby193/bin/ruby.exe C:/Ruby193/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets

Pourquoi montre-t-on la production comme RAILS_ENV? Peut-être que mon environnement de développement s'est transformé en environnement de production? Mais même dans ce cas, je ne devrais pas avoir besoin de précompiler les actifs pour obtenir des changements. En tous cas Rails.env.development? résultats true et Rails.env.production? résultats false dans les contrôleurs et les fichiers erb.

J'ai essayé de supprimer mon répertoire / tmp en vain.

J'ai dû ajouter la ligne suivante à config / application.rb pour que Heroku fonctionne avec la boussole:

config.assets.initialize_on_precompile = false

Cependant, la suppression de cette ligne n'a pas aidé mon problème de toute façon.


14
2017-10-06 19:08


origine


Réponses:


Supprimer le contenu de votre public/assets/ annuaire. C'est là que vont les fichiers précompilés, et ils sont servis s'ils existent, plutôt que la demande passant par Sprockets. Vous pouvez nuke tout le répertoire en toute sécurité, et les choses devraient fonctionner à nouveau.


33
2017-10-06 19:11



Une autre technique consiste à renommer le répertoire public / assets / en quelque chose comme public / assets_hide /. Puis renommez-le avant d'exécuter "rake assets: precompile" et de le pousser sur le serveur. Cela réduit le temps de précompilation et préserve également les autorisations des fichiers d'actifs pour certaines gemmes, comme riche, qui copie sur les ressources.

Un moyen plus simple consiste à modifier votre fichier config / surroundings / development.rb pour:

config.serve_static_assets = false

Vous n'aurez alors plus besoin de vous mêler du répertoire public / assets. Cependant, si vous utilisez quelque chose comme un trombone pour télécharger des fichiers image, cela ne fonctionnera pas car les fichiers image ne seront pas diffusés.


8
2017-10-07 04:36



Probablement évident pour tout le monde, mais je voulais juste ajouter que si vous supprimez ou renommez public / assets / folder, vous devrez probablement redémarrer votre serveur local et effacer le cache du navigateur :-)


3
2018-03-30 18:53