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

发布于 2024-12-07 10:29:47 字数 194 浏览 0 评论 0原文

Sprockets gem 缓存 .erb 文件,即使这些文件中的 ruby​​ 代码在每次编译时的计算结果可能不同,

例如: foo.js.erb

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

计算一次并永久缓存。如何防止某些此类文件被 sprocket 缓存?

Sprockets gem caches .erb files even though the ruby code in those might evaluate differently on every compilation

For example: foo.js.erb

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

evaluates it once and caches forever. How do you prevent certain files like this from being cached by sprockets?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伤感在游骋 2024-12-14 10:29:47

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

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

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

You could separate your JavaScript into libraries (.js.erb or just .js) and configuration data (such as your var foo). Then leave all the library code in the hands of Sprocket and put your configuration into your normal ERB views (probably embedded in your layouts).

You could also serve the configuration data through a separate controller (/config.js perhaps) if that fits your architecture better.

This approach avoids your whole problem by separating static libraries from non-static data. Also, this approach fits nicely with the Rails 3.1 asset pipeline where you're supposed to pre-compile everything before your production deployments.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文