Heroku在部署时不会预编译资产
它非常明确地在其文档中说如果我不在本地预编译它就会这样做。
说实话,我没兴趣在本地预编译这些。
我在production.rb中有什么,我在application.rb中重复了一遍
在我的production.rb中 :
config.serve_static_assets = false config.assets.compile = false config.assets.precompile << 'application.js' config.assets.precompile << 'application.css' config.assets.precompile << 'screen.css'
然后我部署,然后返回:
-----> Compiled slug size: 52.4MB -----> Launching... done, v28 http://myapp.herokuapp.com deployed to Heroku
所以它“编译”了一些东西,对吗? 除了没有去,我去了网站,.css和.js文件是空白的。
为了在本地预编译,我需要在bootstraps_and_overrides.css中注释掉:
@import "screen.css.scss";
然后它在本地预编译,我的本地机器将无法正确加载css,但远程它将实际正常工作。
所以我现在的部署方法是注释掉那行代码,
bundle exec rake assets:precompile git add . git commit -m "Adding public/assets" git push heroku development:master
然后( 不幸的是! ):
bundle exec rake assets:clean
然后在我的.css中取消注释该行代码。
有些事要检查
- 你在雪松上,对吧? Heroku仅在Cedar上支持此行为。
- 你在Rails 3上,对吧? Heroku不支持在Rails 4上预编译资产。
- 你打开了资产管道,对吗? 在
config/application.rb
您需要行config.assets.enabled = true
- 您必须没有
public/assets
文件夹。 在部署时,Heroku根据此文件夹是否存在(即使它是空的)决定是否预编译 。 - 如果管道已打开且您没有assets文件夹,则预编译必须失败。
尝试改变这个。 我希望这能帮到您。
在config / environments / production.rb中
config.assets.compile = true config.assets.digest = true
你可能在错误的Heroku堆栈上。 在创建使用资产管道的应用程序时,请确保指定stack Cedar。
heroku create -stack cedar
它不会部署的原因是因为Google字体。 将文件移动到application.css,例如:
*= require_self *= require_tree . */ @import url(http://fonts.googleapis.com/css?family=Special+Elite);
将允许应用程序部署,并使字体工作。