3

スプロケットgemは.erbファイルをキャッシュしますが、それらのルビーコードはコンパイルごとに異なる評価をする可能性があります

例:foo.js.erb

var foo = <%= Kernel.rand %>;

それを一度評価し、永久にキャッシュします。このような特定のファイルがスプロケットによってキャッシュされないようにするにはどうすればよいですか?

4

1 に答える 1

2

JavaScriptをライブラリ(.js.erbまたは単に.js)と構成データ(のなど)に分けることができますvar foo。次に、すべてのライブラリコードをSprocketの手に委ね、構成を通常のERBビュー(おそらくレイアウトに埋め込まれている)に配置します。

/config.jsアーキテクチャに適している場合は、別のコントローラ(おそらく)を介して構成データを提供することもできます。

このアプローチは、静的ライブラリを非静的データから分離することにより、問題全体を回避します。また、このアプローチは、本番環境にデプロイする前にすべてをプリコンパイルすることになっているRails3.1アセットパイプラインにうまく適合します。

于 2011-09-30T01:15:32.103 に答える