Как группа активов в рельсах 3.1 обрабатывается компоновщиком? - PullRequest
19 голосов
/ 08 сентября 2011

Я не понимаю, что именно происходит с этой группой, и что делает с ней упаковщик. Он загружается только в режиме разработки? Что если я хочу создать новый тип среды, как мне обращаться с этой группой? И т.д.

group :assets do
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

Ответы [ 3 ]

22 голосов
/ 08 сентября 2011

Код, который обрабатывает :assets группу, помещенную в config\application.rb. В рельсах 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
8 голосов
/ 11 апреля 2012

Чтобы уточнить ответ, из Руководство по конвейерному активу рельсов :

а) по умолчанию они НЕ включены в производство:

# Gems used only for assets and not required
# in production environments by default.

б) Если вы добавите новый тип среды, вы захотите обработать его в соответствии с ответом Дмитрия выше. То есть добавьте его в качестве одной из групп, которым это потребуется.

0 голосов
/ 15 июля 2013

Я думаю, что должно быть,

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

Надеюсь, это поможет:) -

...