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

Zak*_*123 6 heroku ruby-on-rails-3 asset-pipeline ruby-on-rails-3.2

我正在阅读"Rails教程:通过示例学习Rails 3.2"一书,但我在第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]-->
Run Code Online (Sandbox Code Playgroud)

这在我的本地机器上工作正常,但是当我使用它将它部署到heroku(雪松)时

$ bundle exec rake assets:precompile
$ git push heroku
Run Code Online (Sandbox Code Playgroud)

我查看网站时出错:

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' %>
Run Code Online (Sandbox Code Playgroud)

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

config.assets.precompile += %w( blueprint/screen.css blueprint/print.css blueprint/ie.css )
Run Code Online (Sandbox Code Playgroud)

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

提前感谢任何建议.

Ric*_*lse 1

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

这并没有什么问题。

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