Rails 3.1&链轮&编译JS文件

时间:2011-05-22 08:30:05

标签: ruby-on-rails ruby-on-rails-3.1 sprockets

所以只需使用Sprockets资产管道尝试Rails 3.1-rc1:

我运行rake assets:precompile

我获取/ public / assets目录和application.js文件MD5哈希:

application-266b6b0b4fbd28fc01145d90a4158b2f.js

但问题是:

当我更新我的JS并运行rake assets:precompile时,我获得了更多的JS文件并且它不会删除旧文件。

我注意到它是如何工作的 - 浏览器只选择第一个,我必须手动删除旧的。这似乎不应该如何工作。

只是一个侧面抱怨:每当我改变某些东西时,似乎我必须运行rake assets:precompile。这很痛苦。

(我想有必要提供一些关于这一切是如何工作的文档)。

感谢。

1 个答案:

答案 0 :(得分:4)

js文件的名称是<文件名> - < hash> .js。

这样做是为了在将新版本的应用程序部署到生产服务器时,访问者也必须加载新的js文件。哈希确保他们不会混淆新的应用程序和旧的缓存的js,它们可能会破坏整个应用程序,同时考虑到了当今Web的动态特性。

在大多数部署方案中,您将把您的应用程序放在服务器上的新目录中,并且那里不会有旧的已编译的js文件。