【问题标题】:rails assets not being properly precompiled by herokuheroku 没有正确预编译 rails 资产
【发布时间】:2014-07-12 12:12:04
【问题描述】:
我的资产没有被正确地预编译到我的登台 heroku 应用程序中。我通常在推送之前使用rake assets:precompile,但我的高级开发人员告诉我不要使用它并将/public/assets 放入gitignore 中说heroku 将自动precompile 资产。当我推动时,heroku 说它运行 rake assets:precompile 但我的资产都没有出现。该页面只是 html。
可能的原因:在我的高级开发人员告诉我他的方式之前,我运行了 rake assets:precompile 并从 gitignore 中删除了 /public/assets,因为我认为它不应该存在。但是在他告诉我之后,我将 /public/assets 放回 .gitignore 并删除了所有公共资产,但这些资产仍然无法在 heroku staging 应用程序上运行。我错过了什么?
【问题讨论】:
标签:
ruby-on-rails
heroku
asset-pipeline
ruby-on-rails-4.1
【解决方案1】:
我在这里找到了解决方案:https://stackoverflow.com/a/16571492/1890135
我没有在问题中指定这一点,但我正在制作一个不称为 staging 的第二个 staging 应用程序,因此我必须在这个新的 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
【解决方案2】:
你为什么在你的gitignore 文件中包含public/assets?不需要它,除非您已经在本地预编译了资产并且不想在 Heroku 中使用它们?
--
测试您的应用是否可以在staging 中运行的一个好方法是运行rake assets:precompile RAILS_ENV=production。这将像 Heroku 一样 - 编译您的资产
我最初会做的是:
- 在本地预编译您的资产(使用
rake assets:precompile RAILS_ENV=production)
- 在您的
public/assets 文件夹中检查预编译文件
- 如果他们在那里,推送到 Heroku 并再做一次
- 如果没有,还有其他问题需要修复
不过,一般来说,Heroku 的预编译过程与您在本地执行的过程相同。所以也许你甚至可以尝试在生产模式下运行你的 Rails 服务器,看看可能是什么问题;它可能比 Heroku 更像你的应用程序