1

我的资产没有被正确地预编译到我的登台 heroku 应用程序中。我通常rake assets:precompile在推送之前使用,但我的高级开发人员告诉我不要使用它并放入/public/assetsgitignore 说 heroku 会自动precompile获取资产。当我推动时,heroku 说它运行rake assets:precompile但我的资产没有出现。该页面只是html。

可能的原因:在我的高级开发人员告诉我他的方式之前,我运行rake assets:precompile/public/assets从 gitignore 中删除,因为我认为它不应该在那里。但是在他告诉我之后,我将 /public/assets 放回.gitignore并删除了所有公共资产,但这些资产仍然无法在 heroku staging 应用程序上运行。我错过了什么?

4

2 回答 2

2

我在这里找到了解决方案:https ://stackoverflow.com/a/16571492/1890135

我没有在问题中指定这一点,但我正在制作一个不称为 staging 的第二个登台应用程序,所以我必须rails_12factor gem在这个新的登台名称环境下添加。

group :staging_new, :staging, :production do
  gem 'rails_12factor' # To enable features such as static asset serving and logging on Heroku
end
于 2014-05-24T13:57:44.770 回答
1

你为什么public/assets在你的gitignore文件中?没有必要在那里,除非你已经在本地预编译了你的资产并且不想在 Heroku 中使用它们?

--

测试您的应用程序是否可以工作的一个好方法staging是运行rake assets:precompile RAILS_ENV=production. 这将像 Heroku 一样 - 编译你的资产

我最初会做的是:

  • 在本地预编译您的资产(使用rake assets:precompile RAILS_ENV=production
  • 检查您的public/assets文件夹中的预编译文件
  • 如果他们在那里,推送到 Heroku 并再次执行
  • 如果没有,将有另一个问题需要解决

不过,一般来说,Heroku 的预编译过程与您在本地执行的过程相同。所以也许你甚至可以尝试在生产模式下运行你的 Rails 服务器,看看可能是什么问题;它可能比 Heroku 更像你的应用程序

于 2014-05-23T08:40:40.930 回答