How is the :assets group in rails 3.1 handled by b

2019-02-03 02:14发布

I don't understand what exactly is going on with this group, and what bundler is doing with it. Is it only loaded in dev 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

3条回答
beautiful°
2楼-- · 2019-02-03 02:49

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.

查看更多
疯言疯语
3楼-- · 2019-02-03 02:57

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
查看更多
Animai°情兽
4楼-- · 2019-02-03 03:12

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

查看更多
登录 后发表回答