Rails 3.2.1资产管道不处理/供应商/资产/样式表?

时间:2012-01-29 23:50:11

标签: ruby-on-rails-3 heroku asset-pipeline ruby-on-rails-3.2

我正在阅读"Rails Tutorial: Learn Rails 3.2 By Example"书,但我在第4章末​​尾有一点问题。

在本书中,您下载了Blueprint css框架,将其添加到/ vendor / assets / stylesheets,然后使用以下命令在layouts / application.html.erb中引用它:

<%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
<%= stylesheet_link_tag 'blueprint/print',  :media => 'print' %>
<!--[if lt IE 8]><%= stylesheet_link_tag 'blueprint/ie' %><![endif]-->

这在我的本地计算机上工作正常,但是当我使用

将其部署到heroku(雪松)时
$ bundle exec rake assets:precompile
$ git push heroku

我查看网站时出错:

app[web.1]: Completed 500 Internal Server Error in 71ms
app[web.1]: ActionView::Template::Error (blueprint/screen.css isn't precompiled):
app[web.1]:     4: <%= stylesheet_link_tag 'blueprint/screen', media: 'screen' %>
app[web.1]:     5: <%= stylesheet_link_tag 'blueprint/print',  media: 'print' %>

目前,我能够让它工作的唯一方法是通过将其放入production.rb来手动告知有关蓝图样式表的信息。

config.assets.precompile += %w( blueprint/screen.css blueprint/print.css blueprint/ie.css )

我做错了吗?有没有办法让rake assets:precompile自动缩小/压缩/ vendor / assets /中的所有文件(如果存在,这样做是否有缺点)?

提前感谢任何建议。

3 个答案:

答案 0 :(得分:1)

如果你想直接引用管道中的文件,就像你在这里一样,那么你应该将这些文件添加到预编译数组中,以便它们在生产中工作。

这没有任何问题。

您可以为供应商/资产预编译添加一个包罗万象的规则,但我个人认为最好根据需要添加内容,以便了解应用中发生了什么。

答案 1 :(得分:1)

https://stackoverflow.com/a/7541958/304690所述的方法为我解决了这个问题。

答案 2 :(得分:-3)

我遇到了同样的问题。但是在我修改了config / environments / production.rb

上的行代码之后

OLD:config.assets.compile = false到NEW:config.assets.compile = true

commit -am“......” git push git push heroku

最后它起作用