我在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 /提醒我所有的CSS和JS。
为什么在我在资产编辑之间没有改变任何内容时会发生这种情况?
显然当前的时间戳是以某种方式参与的,但是为什么就是那样 - 再次 - 我什么都没改变?
最后,是否有任何方法可以更改资产预编译,以便仅在自上次预编译后更改CSS和JS资产时才重新生成它们?
答案 0 :(得分:1)
您可以使用Capistrano执行此操作,并基本上针对旧版本检查当前部署并查看更改的文件。这是我了解它的地方。
https://github.com/capistrano/capistrano/issues/227 http://www.bencurtis.com/2011/12/skipping-asset-compilation-with-capistrano/
答案 1 :(得分:0)
它会改变,因为每次你创建一个新的gzip文件时,即使内容相同,生成的文件也会不同,源代码控制系统也不知道如何处理这个问题(而且不应该这样做)这样做。)
您应该查看this answer以了解要添加到gitignore的文件。
您也可以在github中查看this discussion。