いくつかのgemを更新したため、すべてのテストがエラーで失敗します。
ActionView :: Template :: Error:アセットは実稼働環境でプリコンパイルされるように宣言されていません。
Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )
を_config/initializers/assets.rb
_に追加し、サーバーを再起動しますapp/views/layouts/_faviconsheader.html.erb:14:in _
_app_views_layouts__faviconsheader_html_erb__1320
_app/views/layouts/application.html.erb:21:in _
_app_views_layouts_application_html_erb__4340
_
エラーは次の行を含む部分的な__faviconsheader.html.erb
_を参照しているようです:
_<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>
_
このパーシャルは_application.html.erb
_:_<%= render partial: 'layouts/faviconsheader' %>
_にロードされます。
このエラーの原因と対処方法を教えてください。 gemが更新される前に、すべてのテストに合格しました。
Rails 4.2.5。更新されたgemの1つはsprockets
(バージョン3.5.2にスプロケットを更新)でした。 github で何かを読みました。スプロケット4に問題があるが、バージョン4を使用していない。
追伸Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )
を_config/initializers/assets.rb
_に追加しても、エラーは続きます。しかし、それがうまくいったとしても、この問題が発生した理由を理解したかったのですが、gemの更新以外の変更はありませんでした。
ロングアンサー+説明
エラーメッセージで推奨されているように、正しい修正はファイルをプリコンパイル済みアセットに追加することだと思います。実行時にレンダリングする必要のあるerbファイルがあるため、それで問題が解決するわけではありません。ファイルが静的なjsonファイルである場合、プリコンパイル済みアセットに追加した後でも問題は発生しません。
image_path
ヘルパーを使用する場合、Sprocketsは静的なアセットを持っていると想定します。 sprockets-Rails
3.0より前にアプリでエラーが発生しなかったという事実は、驚くべきことです。この新しいバージョンは、明らかに、標準の実施においてより良い仕事をしています。 (3.0にはまもなく更新される可能性のある他の問題もあるようです)
マニフェスト内にerbが必要な場合は、image_path
またはasset_path
ではなくルートパスヘルパーを使用してURLを取得することをお勧めします。これには、マニフェストルートをconfig/routes.rb
ファイルに追加し、コントローラーアクションを介してjsonファイルをレンダリングする必要があります。ビューファイルは、.erb
マニフェストになります。
短い答え
bundler update
バージョンを2.3.3から3.0.0に変更したsprockets-Rails
を実行した後、これが私に起こり始めました。簡単な修正は、Gemfileでsprockets-Rails
をバージョン2.3.3に戻し、bundle install
を再度実行することです。
gem 'sprockets-Rails', '2.3.3'
余談ですが、私は開発環境でこの問題を経験していましたが、rake assets:precompile
を実行することで修正できました。残念ながら、テストに合格しませんでした。
同様のエラーが発生しました。 asset.rbなどは変更せず、サーバーを再起動するだけでエラーは発生しません。
ActionView :: Template :: Error(アセットは実稼働環境でプリコンパイルされるように宣言されていません。Rails.application.config.assets.precompile += %w( Rails.png )
をconfig/initializers/assets.rb
に追加してサーバーを再起動します):10:<% = link_to「今すぐサインアップ!」、「#」、クラス:「btn btn-lg btn-primary」%> 11:12:13:<%= link_to image_tag( "Rails.png"、alt: "Rails logo" )、14: ' http://rubyonrails.org/ '%> app/views/static_pages/home.html.erb:13:in `_app_views_static_pages_home_html_erb ___ 1806898863626708249_70312070486240 '
人々は長い答えを出しましたが、私は非常にシンプルで簡潔な答えを提案します
config/initializers/assets.rbおよび
次の行を追加します
Rails.application.config.assets.precompile + =%w(style.css)
style.cssは、cssの任意のファイル名に置き換えることができます