アセットに関するいくつかの問題があります。間違ったファイルにコンパイルされています(「/ admin」のフロントエンドコードにコンパイルされるなど)。ほとんどの資産はエンジンからのものです。私はこれをデバッグして最適化したい。アセットパイプラインをプロダクションのように動作させる
はそのために、私は、プリコンパイル仕え、それが生産で行われるだけのように私のの開発環境に失敗する必要があります。
私は私の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
でこれを実行すると、私のすべての資産およびpublic/
でmanifest.yml
を与えます。
しかし、その後、サーバーは失敗します。
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ををプリコンパイルされていません。しかしそれは!そこには、公共のdirのmanifest.yml
にあり、ブラウザ(またはwget):http://localhost:3000/assets/favicon.icoで取得できます。
Faviconは、単に最初に呼び出される資産です。私がファビコンを取り除くと、問題は単に次の資産、つまり「all.js」、またはそれが取り除かれたときに「all.css」などとなります。私は "footer_bg.png"までそれを取り除くことができ、それはそこで失敗するでしょう。再び:問題はfaviconではありませんが、開発環境のでは、あらかじめコンパイルされたアセットがまったく表示されません。
を取得するにはさらに何が必要ですアセットパイプラインはと同じです?
EDIT:faviconは問題ではなく、単なる症状であることをより明示的に説明します。私はApacheをインストールすることになった
config.assets.precompile += %w(store/all.js store/all.css admin/all.js admin/all.css favicon.ico)
実稼働環境のスタックは何ですか?単一サーバー/マルチサーバー、Apache/Nginx、Heroku?カピストラーノを使って展開し、カピストラーノのレシピを使用していますか?本番環境でconfig.serve_static_assets = trueを使用していますか? Railsで推奨されているように、Railsではなくserve_static_assetsをapache/nginxで処理しようとしましたか? – John
私の生産スタックはかなりブラックボックスの旅客です。これはサイト5の仮想ホストです。私はcapistranoでデプロイするのではなく、git-push && post-commitフック(別名git-deploy)を使用しています。 'config.serve_static_assets = true'は無効です。 Apache経由で資産を提供しようとしました。それは少しを解決する。私がここで解決しようとする問題として、私の**開発**環境は生産のように私の資産を提供していません。 – berkes