6

I'm reading the "Rails Tutorial: Learn Rails 3.2 By Example" book but I have a slight problem at the end of chapter 4.

In the book you download the Blueprint css framework, add it to /vendor/assets/stylesheets and then reference it in layouts/application.html.erb using:

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

This works fine on my local machine, but when I deploy it to heroku (cedar) using

$ bundle exec rake assets:precompile
$ git push heroku

It gives an error when I view the site:

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' %>

At the moment the only way I've been able to get it working is to manually tell rails about the blueprint stylesheets by putting this in production.rb

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

Am I doing something wrong? Is there a way to get rake assets:precompile to automatically minify/compress all the files in /vendor/assets/ (if there is, is there a downside to doing this)?

Thanks in advance for any advice.

Zak123
  • 363
  • 2
  • 9

3 Answers3

1

If you want to reference files in the pipeline directly, as you have here, then it is expected that you will add those files to the precompile array for them to work in production.

There is nothing wrong with this.

You could add a catch-all rule to precompile for vendor/assets, but personally I think it is better to add stuff as you need it so that you know what is going on in your app.

Richard Hulse
  • 10,383
  • 2
  • 33
  • 37
1

The approach as described at https://stackoverflow.com/a/7541958/304690 worked for me solving this.

Community
  • 1
  • 1
gliptak
  • 3,592
  • 2
  • 29
  • 61
-3

I got the same problem. However after I modified a line code on config/environments/production.rb

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

commit -am "......" git push git push heroku

Finally it works

  • 1
    I recommend that you read the asset guide section on [live compiling](http://guides.rubyonrails.org/asset_pipeline.html#live-compilation) – Richard Hulse Feb 01 '12 at 20:35