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