我们正在处理一个问题,即我们的资产在slug编译期间没有任何问题进行编译。但是,在推送到我们的暂存和生产应用程序之后的昨天开始,我们现在遇到的问题是浏览器指示资产由于某种原因无法加载。
使用浏览器开发工具,我们看到此错误: 无法加载资源:服务器响应状态为404(未找到): /assets/application-a3b17e738ce8996d058795310e3cd9b4.js
我们决定做的第一件事是将我们的代码库回滚到最后一次提交(这是在之前的heroku推送中完全正常运行的提交)。浏览器无法加载资产时存在同样的问题。
使用bash,我连接到heroku实例并检出public / assets目录以确保资产实际存在。它们在文件名前面都有正确的哈希码。文件不为空,清单文件看起来不错。 我不确定此时还有什么可以尝试的。到目前为止,我们从未遇到过加载资产的问题。 heroku push日志中没有任何内容表明任何事情都会在任何时候发生错误。
答案 0 :(得分:4)
我有同样的问题。在我的生产宝石(在我的Gemfile中)中包含rails_12factor
gem之后,我似乎已经修复了这个问题。我在阅读了Heroku支持页面的第一部分后发现了这一点:https://devcenter.heroku.com/articles/rails4
记录和资产
Heroku将日志视为流,并要求将日志发送到STDOUT。要在Rails 4中启用STDOUT日志记录,您可以添加rails_12factor gem。此gem还将配置您的应用程序以在生产中提供资产。要添加此gem,请将其添加到Gemfile:
gem'rail_12factor',group :: production
此gem允许您使应用程序更接近12因子应用程序。您可以获得有关gem如何配置日志记录和资产读取rails_12factor README的更多信息。如果您的应用程序中没有此gem,您将在部署时收到警告,并且您的资产和日志将无法正常运行。
'rails_12factor'gem在rails_serve_static_assets
gem和rails_stdout_logging
上有gem依赖关系。基本上,如果你不希望你的Rails应用程序使用其宝贵的周期处理请求只是为了服务资产,那么你需要找出一个不同的解决方案,如CDN:https://devcenter.heroku.com/articles/using-amazon-cloudfront-cdn-with-rails