Backport of Rails 3.1.x Sprockets integration to Rails 3.0.x
Most code has been extracted from the Rails 3-1-stable branch. Modified to suit our needs.
Usage
In your Gemfile
:
gem "sprockets_rails3_backport"
...plus whatever supplementary gems you want for the asset pipeline:
gem 'coffee-script', '2.2.0'
gem 'therubyracer', '0.9.9'
gem 'uglifier', '>= 1.0.3'
In your routes.rb
:
MyApp::Application.routes.draw do
if (app = Rails.application).config.assets.compile
mount app.assets => app.config.assets.prefix
end
# ...
end
Here are the various config.assets
options and their defaults:
config.assets.paths = []
config.assets.precompile = [ Proc.new{ |path| !['.js', '.css'].include?(File.extname(path)) },
/(?:\/|\\|\A)application\.(css|js)$/ ]
config.assets.prefix = "/assets"
config.assets.version = ''
config.assets.debug = false
config.assets.compile = true
config.assets.digest = false
config.assets.manifest = nil
config.assets.cache_store = [ :file_store, "#{root}/tmp/cache/assets/" ]
config.assets.js_compressor = nil
config.assets.css_compressor = nil
config.assets.initialize_on_precompile = true
Differences from Rails 3.1
This gem was made for Shopify's use, and I've made changes to some behaviour that either didn't work in Rails 3.0, or didn't make sense for Shopify:
-
image_path
(and thereforeimage_tag
) do not use the asset pipeline. - Rails 3.0 does not have support for initializer groups, so
rake assets:precompile
cannot do the trick of partially loading the environment. - precompilation does not output gzipped versions of assets.
-
javascript_path
andstylesheet_path
helpers have been fixed to append the appropriate file extension if there's none provided. - computing digests in the view helpers no longer throws an error if the digest is not found and
config.assets.compile
is off. -
config.assets.enabled
is not used.