rails资源未被heroku正确预编译

时间:2014-05-23 08:09:22

标签: ruby-on-rails heroku asset-pipeline ruby-on-rails-4.1

我的资产未正确预编译到我的staging heroku应用程序。我通常在推送之前使用rake assets:precompile,但我的高级开发人员告诉我不要使用它并将/public/assets放入gitignore,说heroku将自动precompile资产。当我推送时,heroku说它运行rake assets:precompile但我的资产都没有显示出来。该页面只是html。

可能的原因:在我的高级开发人员告诉我他的方式之前,我运行了rake assets:precompile并从gitignore删除了/public/assets,因为我不认为他在那里。但在他告诉我之后,我将/ public / assets重新放入.gitignore并删除了所有公共资产,而且这些资产仍未在heroku登台应用程序上运行。我错过了什么?

2 个答案:

答案 0 :(得分:2)

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

我没有在问题中指明这个,但是我正在制作一个不称为分段的第二个临时应用,所以我必须在这个新的暂存名称环境下添加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

答案 1 :(得分: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更多你的应用程序