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中取消注释该行代码。

有些事要检查

  1. 你在雪松上,对吧? Heroku仅在Cedar上支持此行为。
  2. 你在Rails 3上,对吧? Heroku不支持在Rails 4上预编译资产。
  3. 你打开了资产管道,对吗? 在config/application.rb您需要行config.assets.enabled = true
  4. 您必须没有public/assets文件夹。 在部署时,Heroku根据此文件夹是否存在(即使它是空的)决定是否预编译 。
  5. 如果管道已打开且您没有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); 

将允许应用程序部署,并使字体工作。