强制Heroku重新编译所有资产

时间:2014-03-06 08:38:33

标签: ruby-on-rails heroku ruby-on-rails-4

我更新了两张图片,现在Heroku正确地提供了一张图片,但另一张图片仍然是旧图像。部署日志的输出显示两个图像都使用新哈希进行预编译,但用于检索其中一个的哈希(来自application.css文件)仍然是旧哈希,并且它以某种方式抓取旧图像。

我想强制Heroku重新编译每个资产并重新启动服务器(基本上是一个全新的部署)。目前似乎智能地#34;只预编译它认为是新的资产。我尝试了rake assets:clobberrake assets:precompile,但它没有改变任何东西 - 仍然使用旧的哈希来获取一个旧图像版本,但成功获得另一个。还有其他选择吗?

4 个答案:

答案 0 :(得分:21)

手动使资产过期 - 在config.assets.version = 1.0中将1.1更改为config/production.rb。但仍然不确定发生了什么。

答案 1 :(得分:4)

您现在可以在不提交任何内容的情况下重新编译资产。

heroku plugins:install heroku-repo

然后

$ heroku repo:reset --app=appname
$ git push heroku

来源:https://stackoverflow.com/a/9736959/3034747

此命令用于完成相同的操作,但它已被删除,不再有效:

$ heroku repo:rebuild -a appname

答案 2 :(得分:0)

总计,但做一个小改动并重新部署。

您必须实际重新部署,因为在资产编译发生并且编译了slug时。只需使用heroku restart重新启动服务器,更改配置变量,或者几乎所有其他内容都不会为您构建新的slug。

我刚遇到这个问题,这至少是为我解决的问题; YMMV。

答案 3 :(得分:-1)

这样的事情可能会发生 - 为什么不尝试使用heroku run rake assets:cleanheroku run rake assets:precompile来清理服务器上的资产