Sprockets gem缓存.erb文件,即使这些文件中的ruby代码在每次编译时可能会有不同的评估
例如:foo.js.erb
var foo = <%= Kernel.rand %>;
评估一次并永久缓存。你如何防止像这样的某些文件被sprockets缓存?
答案 0 :(得分:2)
您可以将JavaScript分为库(.js.erb
或仅.js
)和配置数据(例如var foo
)。然后将所有库代码留在Sprocket手中,并将您的配置放入正常的ERB视图中(可能嵌入在布局中)。
如果更适合您的架构,您也可以通过单独的控制器(也许/config.js
)提供配置数据。
这种方法通过将静态库与非静态数据分离来避免您的整个问题。此外,这种方法非常适合Rails 3.1资产管道,您应该在生产部署之前预编译所有内容。