heroku - Heroku 中的 Asset_pipeline 对预编译的 javascript 使用了错误的 Assets 哈希

标签 heroku ruby-on-rails-4 asset-pipeline amazon-cloudfront

我正在尝试设置我的应用程序以通过 Amazon S3/Cloudfront CDN 提供 Assets 。它是一个 Rails 应用程序,我使用 asset_sync gem 按照 this heroku document. 来实现此目的

我将我的项目推送到heroku,然后运行heroku run rake assets: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 写入的哈希值是正确的(因为我也在本地主机下的暂存中运行了此文件)。

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

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

感谢您的帮助!

最佳答案

过了一段时间,我意识到这是因为我之前在本地编译了 Assets 并将其推上来。因此,Heroku 没有尝试在生产中进行预编译,而只是使用之前 checkin 的旧的 manifest.json。

你可以在本地重新编译并推送它,或者运行rake assets:clobber删除所有预编译资源,然后commit/push,heroku会意识到它需要预编译。之后,它应该使用正确的 list 文件,并且 Assets 应该正常显示。

我发现这篇博文对于了解情况非常有用:http://www.rubycoloredglasses.com/2013/08/precompiling-rails4-assets-when-deploying-to-heroku/

关于heroku - Heroku 中的 Asset_pipeline 对预编译的 javascript 使用了错误的 Assets 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18926095/

相关文章:

ruby-on-rails - rails : assets not precompiling on Capistrano deploy step due to missing variables

javascript - Heroku 上的 Rails 应用程序中两次包含 jQuery

javascript - 来自 Heroku Toolbelt 的 Foreman 退出并出现错误 : write EINVAL every time

ruby-on-rails - 捆绑安装错误 (Linux)

html - Assets 管道,如何将图像路径添加到背景 : url()?

ruby-on-rails-3.1 - 在 rails 3.1 中的 Assets 管道之外包含一个 JS 文件?

javascript - 直接到 S3 文件上传 Django 和 Heroku

ruby-on-rails - 针对单个存储桶的读写权限的 AWS S3 IAM 策略

ruby-on-rails - 在 Rails 中将 Devise 身份验证助手与 `OR` 语句相结合

Rails 3.1 Asset Pipeline 中的 Javascript 文件