未找到heroku资产404

Eug*_*eia 5 assets heroku

我们正在处理一个问题,即我们的资产在slug编译期间没有任何问题进行编译.但是,在推送到我们的暂存和生产应用程序之后的昨天开始,我们现在遇到浏览器指示资产由于某种原因无法加载的问题.

使用浏览器开发工具,我们看到此错误:无法加载资源:服务器响应状态为404(未找到):/assets/application-a3b17e738ce8996d058795310e3cd9b4.js

我们决定要做的第一件事就是将我们的代码库回滚到最后一次提交(这是在之前的heroku推送中完全正常运行的提交).浏览器无法加载资产时也存在同样的问题.

使用bash,我连接到heroku实例并检出public/assets目录以确保资产实际存在.它们在文件名前面都有正确的哈希码.文件不为空,清单文件看起来不错.我不确定在这一点上还有什么可以尝试的.到目前为止,我们从未遇到过加载资产的问题.heroku push日志中没有任何内容表明任何内容在任何时候都会抛出错误.

Nat*_*han 4

我遇到过同样的问题。rails_12factor在将宝石包含在我的生产宝石(在我的 Gemfile 中)中后,它似乎已修复。我在阅读 Heroku 支持页面的第一部分后发现了这一点: https: //devcenter.heroku.com/articles/rails4

日志记录和资产

Heroku 将日志视为流,并要求将日志发送到 STDOUT。要在 Rails 4 中启用 STDOUT 日志记录,您可以添加rails_12factor gem。此 gem 还将配置您的应用程序以在生产中提供资产。要添加此 gem,请将其添加到您的 Gemfile 中:

gem 'rails_12factor',组::生产

这个 gem 可以让您的应用程序更接近 12factor 应用程序。您可以阅读rails_12factor README,获取有关gem 如何配置日志记录和资产的更多信息。如果您的应用程序中不存在此 gem,您将在部署时收到警告,并且您的资产和日志将无法运行。

'rails_12factor' gem 对rails_serve_static_assetsgem 和具有 gem 依赖性rails_stdout_logging。基本上,如果您不希望 Rails 应用程序使用其宝贵的周期来处理请求只是为了提供资产,那么您需要找出不同的解决方案,例如 CDN:https: //devcenter.heroku.com/articles/使用 amazon-cloudfront-cdn-with-rails