About half a year ago I had to update a rails 3.1 application to 3.2. With the upgrade my Sass and CoffeScript auto-compilation ended up being botched.

This prompted me to change to the asset pipeline, which in itself proved to be a bit like yak shaving, fixing one thing only to have a new bug appear.

One of my primary resources for enabling the asset pipeline was Ryan Bats excellent rails cast about upgrading to 3.1. It helps you get a basic asset pipeline setup.

The standard asset pipeline configuration in rails only covers application.js and application.css, and I needed to add a couple of extra files. One way to do this is to add them to the config.assets.precompile array.

['main.css', 'editor.js', "indgang.js"].each do |asset|
  config.assets.precompile << asset
end

The problem is that in development mode the asset pipeline is turned off, and Rails serves the assets directly. This means you will not discover the error until deploying to production, where Rails throws a nasty “asset not pre-compiled” exception.

Images and Sass

Another small problem I faced was that images included from Sass was not showing up. This was fixed by moving the images to app/assets/images and using the image-url Sass helper.

.some-class
  image-url('bord-top.gif')

It will refer to the correct image path for images placed in app/assets/images.