【问题标题】:Heroku not precompiling my assets?Heroku 没有预编译我的资产?
【发布时间】:2013-11-13 17:44:24
【问题描述】:

我有一个 rails 3.2 应用程序,它给了我“我们很抱歉,但出了点问题。”我部署到heroku时的消息。检查日志有

2013-11-13T17:27:25.599927+00:00 app[web.1]:在 2013-11-13 17:26:25 +0000 开始为 54.247.188.179 获取“/” 2013-11-13T17:27:25.599927+00:00 应用 [web.1]: 2013-11-13T17:27:25.599234+00:00 app[web.1]:在布局/应用程序中渲染 static_pages/root.html.erb (5.9ms) 2013-11-13T17:27:25.599506+00:00 app[web.1]:在 7 毫秒内完成 500 内部服务器错误 2013-11-13T17:27:25.600076+00:00 app[web.1]:在 7 毫秒内完成 500 内部服务器错误 2013-11-13T17:27:25.600076+00:00 app[web.1]:在布局/应用程序中渲染 static_pages/root.html.erb (6.1ms) 2013-11-13T17:27:25.600076+00:00 应用 [web.1]: 10: 2013-11-13T17:27:25.600076+00:00 app[web.1]: ActionView::Template::Error (static_pages.css 未预编译): 2013-11-13T17:27:25.600076+00:00 应用 [web.1]: 9:

还有其他一些看起来非常相似的东西。我一直在研究这个问题并看到了一些其他类似的问题,所以我会避免一些你认为我可能遇到的潜在问题:

  • 在推送到 heroku 之前,我的本地没有 public/assets 文件夹
  • 我的 application.rb 中有 config.assets.enabled = true 行
  • 我的 application.rb 中有 config.assets.initialize_on_precompile = false 行

提前致谢,很高兴提供更多信息。

已解决

显然,为了让 css 正确编译,我必须将此行添加到 config/environments/production.rb:

    config.assets.enabled = true

感谢泰勒的那个。

【问题讨论】:

  • 看起来你没有预编译static_pages.css。我不知道这是否是故意的,但如果预编译资产丢失,您可以通过在 config/environments/production.rb 中设置 config.assets.compile = true 来避免回退到资产管道
  • 哇,泰勒,你死定了,非常感谢。我不知道为什么这是必要的——我以前肯定从未在我的项目中接触过那行代码,而且它工作了很长时间。默认情况下应该是假的吗?

标签: ruby-on-rails ruby-on-rails-3 heroku


【解决方案1】:

看起来您没有预编译 static_pages.css。我不知道这是不是故意的,但你有两个选择:

选项 1:如果错过了预编译资产,请避免回退到资产管道。您可以通过设置:

# config/environments/production.rb
config.assets.compile = true

这将导致 Rails 即时编译您的未编译文件,而不是抛出错误(它现在正在这样做)。更多关于这里设置的信息:config.assets.compile=true in Rails production, why not?

选项 2: 确保正在预编译文件。您可以通过设置:

# config/environments/production.rb
config.assets.precompile += ['admin.js', 'admin.css', 'static_pages.css']

这将导致 rails 预编译并将样式表包含在您的资产管道中。更多关于这里设置的信息:What is the purpose of config.assets.precompile?

【讨论】:

    【解决方案2】:

    您需要构建一个要预编译的资产列表。

    例如,在您的 config/environments/production.rb 中:

    config.assets.precompile += %w( foo.js foo.scss static_pages.css)
    

    【讨论】:

      猜你喜欢
      • 2014-07-12
      • 2023-03-09
      • 2012-01-09
      • 2015-08-28
      • 1970-01-01
      • 2012-06-26
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多