我的资产未正确预编译到我的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登台应用程序上运行。我错过了什么?
答案 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更多你的应用程序