1

我有一个 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]:在 7ms 内完成 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

感谢泰勒的那个。

4

2 回答 2

0

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

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

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

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

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

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

这将导致 rails 预编译并将样式表包含在您的资产管道中。更多关于此设置的信息:config.assets.precompile 的目的是什么?

于 2013-11-13T19:01:59.467 回答
0

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

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

config.assets.precompile += %w( foo.js foo.scss static_pages.css)
于 2013-11-13T18:48:32.257 回答