6

そのため、アセット パイプライン ダイジェストには小さな問題があり、(AngularJS 用の) アセットとして多数の HTML テンプレートがあり、asset_pathヘルパーを使用して Javascript ファイルでこれらのアセットのパスを参照しています。残念ながら、アセットのプリコンパイル手順 (および Heroku) が変更をチェックする方法のため、テンプレートを変更しても JavaScript ファイルは再コンパイルされません。

したがって、基本的に次のようなファイルには次のapplication.coffee.erbようなものがあります。

url = '<%= asset_path('views/template.html') %>'

実行すると、ダイジェスト値を持つrake assets:precompileようになりますが、 が変更された場合、ダイジェストは変更されますが、基本的に変更されていないため、再コンパイルされず、古いダイジェストを指し続けます。/assets/views/template-1023911231.htmltemplate.html.slimapplication.coffee.erb

考え?ソリューション?これは実際にはバグのようです。

アップデート

現在私が持っている最善の解決策は、HTML テンプレート アセットを変更する必要があるが、javascript が変更されていない場合、application.rb のアセット バージョンを更新することです。

4

2 に答える 2

5

orディレクティブを使用する解決策がここで提案されました。私の場合、これをファイルに追加すると機能します:depend_ondepend_on_asset.js.erb

//= depend_on_asset views/template.html

url = '<%= asset_path('views/template.html') %>'

これにより、必要に応じて変更があるたびに、このファイルが再コンパイルさviews/template.htmlれます。

于 2013-10-30T16:21:21.933 に答える
2

rake assets:cleanrake assets:precompileコンパイルするために実行してみましたか?

更新 これが直面している問題と同じかどうかはわかりませんが、似ているように聞こえます。githubでこの Heroku の問題を見てください。

それが同じ (または類似している) 場合、Schneems は、スプロケットがファイルを消去するには、アセット ファイルに 3 つの変更が必要であると述べています。

推奨される手順は、次の 4 回を実行し、出力を比較することです。

echo "body {background-color: red}">> app/assets/stylesheets/application.css
git add .; git commit -m "assets changed 1"
git push heroku master
heroku run ls public/assets | awk /application/

状況に合わせて上記を変更することをお勧めします。

于 2013-10-25T20:39:17.140 に答える