如何防止sprockets缓存.erb文件?

时间:2011-09-29 20:24:14

标签: javascript ruby erb sprockets

Sprockets gem缓存.erb文件,即使这些文件中的ruby代码在每次编译时可能会有不同的评估

例如:foo.js.erb

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

评估一次并永久缓存。你如何防止像这样的某些文件被sprockets缓存?

1 个答案:

答案 0 :(得分:2)

您可以将JavaScript分为库(.js.erb或仅.js)和配置数据(例如var foo)。然后将所有库代码留在Sprocket手中,并将您的配置放入正常的ERB视图中(可能嵌入在布局中)。

如果更适合您的架构,您也可以通过单独的控制器(也许/config.js)提供配置数据。

这种方法通过将静态库与非静态数据分离来避免您的整个问题。此外,这种方法非常适合Rails 3.1资产管道,您应该在生产部署之前预编译所有内容。