Heroku没有预编译我的资产?

时间:2013-11-13 17:44:24

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

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

2013-11-13T17:27:25.599927+00:00 app[web.1]: Started GET "/" for 54.247.188.179 at 2013-11-13 17:26:25 +0000
2013-11-13T17:27:25.599927+00:00 app[web.1]: 
2013-11-13T17:27:25.599234+00:00 app[web.1]:   Rendered static_pages/root.html.erb within layouts/application (5.9ms)
2013-11-13T17:27:25.599506+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms
2013-11-13T17:27:25.600076+00:00 app[web.1]: Completed 500 Internal Server Error in 7ms
2013-11-13T17:27:25.600076+00:00 app[web.1]:   Rendered static_pages/root.html.erb within layouts/application (6.1ms)
2013-11-13T17:27:25.600076+00:00 app[web.1]:     10: 
2013-11-13T17:27:25.600076+00:00 app[web.1]: ActionView::Template::Error (static_pages.css isn't precompiled):
2013-11-13T17:27:25.600076+00:00 app[web.1]:     9: 

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

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

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

解决

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

    config.assets.enabled = true

感谢Tyler那个。

2 个答案:

答案 0 :(得分:0)

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

例如,在 config / environments / production.rb

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

答案 1 :(得分:0)

看起来你没有预编译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?