heroku中的Asset_管道为预编译的javascript使用了错误的资产哈希

heroku中的Asset_管道为预编译的javascript使用了错误的资产哈希,heroku,ruby-on-rails-4,asset-pipeline,amazon-cloudfront,Heroku,Ruby On Rails 4,Asset Pipeline,Amazon Cloudfront,我正在尝试将我的应用程序设置为通过AmazonS3/Cloudfront CDN提供资产服务。这是一个rails应用程序,我使用asset\u syncgem按照 我将我的项目推送到heroku,然后运行一个heroku运行rake资产:precompile。这给我的输出如下所示: I, [2013-09-20T21:19:06.506796 #2] INFO -- : Writing /app/public/assets/application-cb6347d3ce9380e02c3

我正在尝试将我的应用程序设置为通过AmazonS3/Cloudfront CDN提供资产服务。这是一个rails应用程序,我使用
asset\u sync
gem按照

我将我的项目推送到heroku,然后运行一个
heroku运行rake资产:precompile
。这给我的输出如下所示:

    I, [2013-09-20T21:19:06.506796 #2]  INFO -- : Writing /app/public/assets/application-cb6347d3ce9380e02c37364b541fd8ae.js
I, [2013-09-20T21:19:19.979570 #2]  INFO -- : Writing /app/public/assets/application-9dc3068c1bf9290c7eb0493fd36b3587.css
[WARNING] fog: followed redirect to abc123.s3-us-west-1.amazonaws.com, connecting to the matching region will be more performant
[WARNING] fog: followed redirect to abc123.s3-us-west-1.amazonaws.com, connecting to the matching region will be more performant
请注意,它为JS文件cb6347d3ce9380e02c37364b541fd8ae.JS编写的哈希值是正确的(因为我在本地主机下的staging中也运行了这个)

但问题是,当我在heroku上点击我的应用程序并检查源代码时,它包含的JS
50460076f4c6eb614a44b6b17323efa7.JS
与之前编译的JS不同

为什么heroku没有选择正确的预编译资产来使用?我在本地部署并执行了所有相同的步骤,本地服务器毫无问题地选择了正确的JS


谢谢你的帮助

过了一段时间,我意识到这是因为以前我在本地编译了资产并将其推高。因此,Heroku没有尝试在生产环境中预编译,只是使用了以前签入的旧manifest.json

您可以在本地重新编译并向上推送它,或者运行
rake assets:clobber
删除所有预编译的资产,然后提交/推送,heroku将意识到它需要预编译。之后,它应该使用正确的清单文件,资产应该正常显示


我发现这篇博文对了解情况非常有用:

这对我很有帮助。感谢您发布您找到的答案。