Most code has been extracted from the Rails 3-1-stable branch. Modified to suit our needs.
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
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.