本番環境のアセットでいくつかの問題が発生しています:アセットがない、間違ったファイルにコンパイルされたもの( "/ admin"のjavascriptがフロントエンドコードにコンパイルされるなど)。ほとんどの資産はエンジンから来ています。これをデバッグして最適化したい。
そのためには、本番環境で行われるのと同じように、開発環境でプリコンパイル、提供、失敗する必要があります。
私は私のにいくつかの行を追加しましたconfig/development.rb
:
config.serve_static_assets = true
config.assets.precompile += %w( store/all.js store/all.css admin/all.js admin/all.css ) # @TODO: clean up, and optimize.
config.assets.compile = false
これをで実行するrake RAILS_GROUPS=assets RAILS_ENV=development assets:precompile
と、すべてのアセットとmanifest.yml
inが得られpublic/
ます。
しかし、サーバーは失敗します:
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Spree/home#index
Showing /xxxx/app/views/spree/shared/_head.html.erb where line #13 raised:
favicon.ico isn't precompiled
favicon.icoはプリコンパイルされていません。しかし、そうです!そこに、パブリックディレクトリに、でmanifest.yml
、ブラウザ(またはwget)でフェッチできます:http:// localhost:3000 /assets/favicon.ico。
注ファビコンは、単に最初に呼び出されるアセットです。ファビコンを削除すると、問題は単に次のアセットである「all.js」、または削除された場合は「all.css」などで表面化します。「footer_bg.png」まで削除すると、そこで失敗します。繰り返しますが、問題はファビコンではありませんが、開発環境でプリコンパイルされたアセットがまったく表示されないという事実です。
本番環境と同様の開発資産パイプラインを取得するには、さらに何が必要ですか?
編集:ファビコンは問題ではなく、単なる症状であるというより明確な説明。