开发者

How is the :assets group in rails 3.1 handled by bundler?

开发者 https://www.devze.com 2023-04-03 19:02 出处:网络
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 shou

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 :)-

0

精彩评论

暂无评论...
验证码 换一张
取 消