1

我在 Heroku 上运行 Rails 3.2 应用程序,因此需要使用资产管道。

关于 Rails 资产管道的一件事让我很困惑一段时间是这个小实验的结果:

git rm -r public/assets

git commit -m "Nuke all generated assets"

RAILS_ENV=production bundle exec rake assets:precompile

git add .

RAILS_ENV=production bundle exec rake assets:precompile

具体来说,如果我检查我的分阶段和非分阶段更改之间的差异,我发现第二个资产预编译已经重新生成/refingerprinted/reminified 我的所有 CSS 和 JS。

当我在资产编译之间没有任何更改时,为什么会发生这种情况?

显然,当前时间戳以某种方式涉及,但为什么会这样 - 再一次 - 我什么也没改变?

最后,是否有任何方法可以更改资产预编译,以便 CSS 和 JS 资产仅在自上次预编译后发生更改时才会重新生成?

4

2 回答 2

1

您可以使用 Capistrano 执行此操作,基本上检查当前部署与旧版本并查看哪些文件已更改。这是我了解它的地方。

https://github.com/capistrano/capistrano/issues/227 http://www.bencurtis.com/2011/12/skipping-asset-compilation-with-capistrano/

于 2013-04-13T03:22:39.210 回答
0

它会改变,因为每次创建新的 gzip 文件时,即使内容相同,生成的文件也会有所不同,源代码控制系统不知道如何处理(也不应该这样做) )。

您应该查看这个答案以了解要添加到 gitignore 的文件。

您也可以在 github 中查看有关它的讨论。

于 2013-05-29T09:03:54.917 回答