How is the :assets group in rails 3.1 handled by bundler?
I don't understand what exactly is going on with this group, and what bundler is doing with it. Is it only loaded in d开发者_开发知识库ev mode? What if I want to make a new environment type, how should I handle this group? Etc.
group :assets do
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
The code that handles :assets
group placed in config\application.rb
. In rails 3.1 it is:
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require *Rails.groups(:assets => %w(development test))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
To elaborate a little on the answer, from rails asset pipeline guide:
a) by default they are NOT included in production:
# Gems used only for assets and not required
# in production environments by default.
b) If you add a new environment type, you would want to handle it according to Dmitry's answer above. That is, add it as one of the groups that will require it.
I think it should be,
if defined?(Bundler)
# If you precompile assets before deploying to production, use this line
Bundler.require(*Rails.groups(:assets => %w(development test)))
# If you want your assets lazily compiled in production, use this line
# Bundler.require(:default, :assets, Rails.env)
end
because there are some warning with the line,
Bundler.require *Rails.groups(:assets => %w(development test))
So we use,
Bundler.require(*Rails.groups(:assets => %w(development test)))
Hope this helps :)-
精彩评论