2012-04-18 6 views
5

アセットに関するいくつかの問題があります。間違ったファイルにコンパイルされています(「/ 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) 
+0

実稼働環境のスタックは何ですか?単一サーバー/マルチサーバー、Apache/Nginx、Heroku?カピストラーノを使って展開し、カピストラーノのレシピを使用していますか?本番環境でconfig.serve_static_assets = trueを使用していますか? Railsで推奨されているように、Railsではなくserve_static_assetsをapache/nginxで処理しようとしましたか? – John

+0

私の生産スタックはかなりブラックボックスの旅客です。これはサイト5の仮想ホストです。私はcapistranoでデプロイするのではなく、git-push && post-commitフック(別名git-deploy)を使用しています。 'config.serve_static_assets = true'は無効です。 Apache経由で資産を提供しようとしました。それは少しを解決する。私がここで解決しようとする問題として、私の**開発**環境は生産のように私の資産を提供していません。 – berkes

答えて

0

私はただの推測

alzabo0:~ $ rails --version 
Rails 3.2.3 
alzabo0:~ $ rails new ojoijoijo 
[...] 
     create public/404.html 
     create public/422.html 
     create public/500.html 
     create public/favicon.ico 
     create public/index.html 
     create public/robots.txt 
[...] 
+0

おそらく。しかし、それはポイントの横にある。問題はfavicon.icoではない、問題は私の開発envです。私はそれが欲しいのように、コンパイルされた資産を認識しません。私は資産パイプライン(長い話)を介してファビコンを実行することを選択したので、これは最初に含まれるファイルであり、単純に資産パイプラインがどこにあるかの例です。あなたが提案するように、私がパイプラインからファビコンを動かすと、いくつかのcssファイルまたはjsファイル上で、資産パイプラインがさらにいくつかの行をチョークします。 – berkes

0

...あなたはpublicfavicon.icoを残しておきたいかもしれないと思うが、あなたのプリコンパイル・リストに追加してみてくださいlocalhost上の乗客はトラブルシューティングを行います。

静的なアセット配信のため、Apache(おそらく旅客が利用できるサーバーでもよい)。 さらに、localhostでは、ログにあるApacheの冗長性を非常に高くして、十分なデバッグ情報を提供することができます。

生産時にルビーバージョンと宝石装荷を可能な限りエミュレートするための乗客。

webrickで実行すると、できるだけ近いところでエミュレートしても、プロダクションスタックと大きく異なることがわかります。私はそこで生産問題を再現することができなかったのです。

生産のようにスタック全体を起動させてトラブルシューティングをすることができました。これは、いくつかの問題が資産の不安を引き起こしていると結論づけます。宝石の資産は回収されません。アクセス権の問題(www-データでは読み取れないコンパイル済みの資産)と適切にコンパイルされていない資産があります。

+0

それは確かに動作します。奇妙なことに、これは生産上必要なことではありません。そして、このラインは、私がきれいにし、修正して最適化したい主なものの1つなので、まさに「生産のような」ものでなければなりません。確かに奇妙な – berkes

+0

。おそらく生産時に、もしあなたが「レーキ資産:クリーン」ならば、それは突然そこではうまくいきませんか?あなたのビューテンプレートでfavicon.icoをどのように参照していますか?個人的には、私はfavicon.icoリンクを生成するためにヘルパーを使用しません。 favicon_link_tagを使用していますか?それはそんなに奇妙なことです、おそらくそれを今devのままにして、面白いビットに移動しますか? – pduey

+0

favicon *は問題ではないことにご注意ください*。問題は、私の開発環境がプリコンパイル時に資産を認識しないことです。 Favicon *は単なる例です*。私がfaviconを出るとき、問題は残っていて、次のアセット、すなわちjsまたはcssファイルで表示されます。 – berkes

関連する問題