【发布时间】:2011-09-08 16:45:14
【问题描述】:
我不明白这个小组到底发生了什么,以及 bundler 正在用它做什么。它仅在开发模式下加载吗?如果我想创建一个新的环境类型,我应该如何处理这个组?等等。
group :assets do
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
【问题讨论】:
标签: ruby-on-rails bundler
我不明白这个小组到底发生了什么,以及 bundler 正在用它做什么。它仅在开发模式下加载吗?如果我想创建一个新的环境类型,我应该如何处理这个组?等等。
group :assets do
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
【问题讨论】:
标签: ruby-on-rails bundler
处理:assets 组的代码放在config\application.rb 中。在 Rails 3.1 中是:
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
【讨论】:
详细解释一下答案,来自rails asset pipeline guide:
a) 默认情况下,它们不包含在生产中:
# Gems used only for assets and not required
# in production environments by default.
b) 如果您添加一个新的环境类型,您需要根据上面 Dmitry 的回答来处理它。也就是说,将其添加为需要它的组之一。
【讨论】:
我认为应该是,
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
因为该行有一些警告,
Bundler.require *Rails.groups(:assets => %w(development test))
所以我们使用,
Bundler.require(*Rails.groups(:assets => %w(development test)))
希望这会有所帮助:)-
【讨论】: