3

它在其文档中非常清楚地表明,如果我不在本地预编译它们,它会这样做。

老实说,我对在本地预编译这些没有兴趣。

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

4

4 回答 4

17

有些事情要检查

  1. 你在雪松上,对吧?Heroku 仅在 Cedar 上支持此行为。
  2. 你在 Rails 3 上,对吧?Heroku 不支持在 Rails 4 上预编译资源。
  3. 你打开了资产管道,对吧?在config/application.rb你需要这条线config.assets.enabled = true
  4. 您必须没有public/assets文件夹。在部署时 Heroku 会根据此文件夹是否存在(即使它是空的)来决定是否进行预编译
  5. 如果管道已打开并且您没有资产文件夹,则预编译一定会失败。
于 2013-07-21T22:07:58.697 回答
2

试着改成这个。我希望这能帮到您。

在 config/environments/production.rb

config.assets.compile = true config.assets.digest = true

于 2015-06-30T04:06:01.563 回答
0

它不会部署的原因是因为谷歌字体。将文件移动到您的 application.css,例如:

 *= require_self
 *= require_tree .
 */


@import url(http://fonts.googleapis.com/css?family=Special+Elite);

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

于 2013-07-21T04:27:41.177 回答
0

您可能在错误的 Heroku 堆栈上。确保在创建使用资产管道的应用程序时指定 stack Cedar。

heroku create -stack cedar

于 2013-07-19T19:21:40.127 回答