我正在为我的Rails应用程序使用Heroku Cedar堆栈,我希望它在slug编译期间预编译资产,因为我不想在git中使用预编译的东西。
现在它接缝一切都应该没问题,因为在slug编译过程中日志说:
Preparing app for Rails asset pipeline
Running: rake assets:precompile
/usr/local/bin/ruby /tmp/build_8bg62ph22vwj/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
但是当我尝试访问heroku logs
中的网站时,我得到了:
2011-11-30T08:23:52+00:00 app[web.1]: ActionView::Template::Error (blueprint/screen.css isn't precompiled):
2011-11-30T08:23:52+00:00 app[web.1]: 22: <%= javascript_include_tag 'http://html5shiv.googlecode.com/svn/trunk/html5.js' %>
2011-11-30T08:23:52+00:00 app[web.1]: 23: <![endif]-->
2011-11-30T08:23:52+00:00 app[web.1]: 24: <%= javascript_include_tag 'application' %>
2011-11-30T08:23:52+00:00 app[web.1]: 25: <%= stylesheet_link_tag 'blueprint/screen', :media => 'screen' %>
…
你知道问题出在哪里吗?
答案 0 :(得分:4)
您是否尝试过在本地部署应用?如果是这样,你将获得相同的结果。
使用资产管道时,默认通过application.css为所有CSS提供服务。
您是否可以将样式表标记更改为:
<%= stylesheet_link_tag 'application' %>
如果在开发过程中显示正确,那么它也应该在生产中使用。
或者,如果您确实需要直接包含该文件,则需要修改config/environments/production.rb
以添加:
config.assets.precompile += %w( blueprint/screen.css )
答案 1 :(得分:0)
Dominic Townsend 提供了绝对正确的问题来源。至于解决方案,{> 3}}在关于堆栈溢出的其他问题的答案中是非常好的选择。