Heroku is read-only file system causing a little havoc for runtime compilation of Sass files into CSS. In my recent trial of running a Rails 3.0-beta application on Heroku with MRI 1.9.1 I came across this issue.
Doing a google on “heroku sass” will bring you to this post which leads you to sass_on_heroku plugin which is deprecated. The current plugin is Hassle, but unfortunately this hasn’t been touched for a few months. There are some current issues with this plugin and Compass. But all is not lost! Jacques Crocker has forked the plugin and made a fix for this. Get a compatible version of Hassle that works with Compass from his repo.
Now, there’s one change that needs to be made to get Hassle working with Rails 3.0-beta. As Hassle is a piece of Rack middleware, the configuration has changed and must be configured using the Railtie class based on this documentation. Admittedly, this is a little hacky, but gets things going. Placing the Railtie file in it’s own file and namedspace would clean things up.
# init.rb # Rails 2.3.x style # # if RAILS_ENV == 'production' # ActionController::Dispatcher.middleware.use Hassle # end require 'hassle' class HassleRailtie < Rails::Railtie config.middleware.use Hassle if Rails.env == 'production' end
And, that’s it! With this you should be able to get Sass and Compass running on Heroku with Rails 3.0-beta.