Je viens de migrer mon application vers Rails 4.1.0
de 4.1.rc2
. J'ai commencé à obtenir ces erreurs pour mes fichiers JS
ActionView::Template::Error: Asset filtered out and will not be served: add `config.assets.precompile += %w( my_js )` to `config/application.rb` and restart your server
Répondant à la demande de Heroku, les responsables de Rails ont fusionné les vérifications de la santé mentale de la gemme sprockets_better_errors dans Rails 4.1. Voir https: // github. com/Rails/pignons-Rails/pull/84
L'objectif est de révéler les erreurs de pipeline d'actifs que vous verriez en production lorsque vous exécutez l'application en mode développement.
Vous utilisez probablement un javascript_include_tag
dans une présentation d'application au lieu de placer vos fichiers JavaScript dans le dossier app/assets/javascripts/.
Vous pouvez déplacer vos fichiers vers le dossier app/assets/javascripts/.
Alternativement, vous devrez mettre à jour votre fichier config/application.rb pour inclure:
config.assets.precompile += %w( my_js )
Notez que le nom de fichier ne doit pas inclure l'extension de fichier .js.
Si vous avez ajouté quelque chose comme stylesheet_link_tag params[:controller]
à l'en-tête de mise en page de votre application, car vous avez des applications JS distinctes sur différents contrôleurs mais avec la même mise en page de base, cela vous ennuiera beaucoup. Un moyen rapide de surmonter cela et de continuer à travailler (mais peut-être pas une solution finale) avec tous les actifs précompilés consiste à ajouter ce qui suit au fichier /config/initializers/assets.rb:
Rails.application.config.assets.precompile += [/.*\.js/,/.*\.css/]
Notez que c'est la même chose pour .js.coffee
et .css.scss
, .js
et .css
suffisent.
Idéalement, la solution de @zmilojko fonctionne mais j'ai également un administrateur actif dans cette application .. donc après avoir regardé un peu plus loin, j'ai trouvé la solution suivante:
Rails.application.config.assets.precompile += %w(*.svg *.eot *.woff *.ttf *.gif *.png *.ico)
Rails.application.config.assets.precompile << /\A(?!active_admin).*\.(js|css)\z/
Ajoutez simplement les lignes ci-dessus à: /config/initializers/assets.rb
Le code ci-dessus précompile les actifs tout en ignorant les fichiers d'administration actifs. afin qu'ils ne soient pas traités deux fois ou hors tour, ce qui entraîne des erreurs.
Oui, en lisant l'erreur sur le navigateur, je n'ai fait qu'ajouter la ligne de code suivante:
Rails.application.config.assets.precompile += %w( depot.css )
Pour le fichier /config/initializers/assets.rb et cela a fonctionné.
Vous pouvez dételer <%= javascript_include_tag 'xxx' %>
de votre erb, et en vous assets/javascript/name_space/index.js.coffee
, ajoutez ceci
#= require ./xxx