【问题标题】:Why does the Rails 3 asset pipeline always regenerate assets even when nothing has changed?为什么即使没有任何变化,Rails 3 资产管道也总是重新生成资产?
【发布时间】:2013-05-30 16:45:45
【问题描述】:

我在 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

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

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

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

最后,有没有办法改变资产预编译,使得 CSS 和 JS 资产只有在自上次预编译后发生更改时才会重新生成?

【问题讨论】:

    标签: ruby-on-rails asset-pipeline


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      您应该查看this answer 以了解要添加到 gitignore 的文件。

      您也可以在 github 中查看this discussion 的相关信息。

      【讨论】:

        猜你喜欢
        • 2016-10-09
        • 1970-01-01
        • 2012-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-10
        • 2016-02-09
        相关资源
        最近更新 更多