5

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

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

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

使用 bash,我连接到 heroku 实例并检查 public/assets 目录以确保资产确实存在。它们都在文件名之前带有正确的哈希码。这些文件不是空的,清单文件看起来不错。我不确定此时还可以尝试什么。到目前为止,我们从未遇到过加载资产的问题。heroku 推送日志中没有任何内容表明任何时候都会引发错误。

4

1 回答 1

4

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

日志记录和资产

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

宝石'rails_12factor',组::生产

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

'rails_12factor' gem 对rails_serve_static_assetsgem 和rails_stdout_logging. 基本上,如果您不希望 Rails 应用程序在处理请求时使用其宝贵的周期来服务资产,那么您需要找出不同的解决方案,例如 CDN:https ://devcenter.heroku.com/articles/使用-amazon-cloudfront-cdn-with-rails

于 2013-12-06T21:27:14.067 回答