그룹 사용하기

의존성을 그룹화하면 전체 그룹에 대한 작업을 수행할 수 있습니다.
# 이 gem들은 :default 그룹에 포함됩니다.
gem 'nokogiri'
gem 'sinatra'

gem 'wirble', :group => :development

group :test do
  gem 'faker'
  gem 'rspec'
end

group :test, :development do
  gem 'capybara'
  gem 'rspec-rails'
end

gem 'cucumber', :group => [:cucumber, :test]
나열된 그룹을 제외한 모든 gem을 설치합니다. 제외되지 않은 그룹에 속해 있는 gem들은 여전히 설치됩니다.
$ bundle install --without test development
특정 그룹을 요청(require)할 때, 명명된 그룹 밖의 gem은 :default 그룹인 것에 주의합시다.
Bundler.require(:default, :development)
기본 그룹과 현재 레일스 환경과 같은 이름의 그룹의 gem을 요정합니다.
Bundler.require(:default, Rails.env)
로드 경로에 넣고 싶은 gem을 제한합니다. 그 그룹에 포함된 gem만 요청가능합니다.
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
자세한 내용은: Bundler.setup

의존성을 그룹화하기

가끔 특정 환경에만 맞는 gem의 그룹이 있습니다. 예를 들어, 초기 단계에 SQLite를 사용해 애플리케이션을 개발했지만, 배포할 때는 mysql2pg를 사용할 경우가 있습니다. 이 경우, 아마도 개발 환경에는 MySQL이나 Postgres가 안 깔려 있고 번들러에서 이를 생략하길 원할 것입니다. 이렇게 하려면, 의존성을 그룹지으면 됩니다.
source 'https://rubygems.org'

gem 'rails', '3.2.2'
gem 'rack-cache', :require => 'rack/cache'
gem 'nokogiri', '~> 1.4.2'

group :development do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end
이제, 개발환경에서 번들러에게 production 그룹을 무시하도록 지시할 수 있습니다.
$ bundle install --without production
번들러는 --without production을 사용하여 설치한 것을 기억합니다. 호기심이 많은 독자를 위해 말하자면, 번들러는 APP_ROOT/.bundle/config에 플래그를 저장합니다. 모든 저장된 번들러의 옵션을 확인하고 싶으시면, bundle config을 실행하시면 됩니다. 이 명령어는 (~/.bundle/config 안에 저장된) 전역 설정과 환경변수에 의한 설정도 출력합니다. 번들러 설정에 관한 더 자세한 정보는 밑의 링크를 확인해 주세요. bundle config

나중에 bundle install을 플래그 없이 실행 한다면, 번들러는 전에 부른 bundle install --without production 명령어를 기억해 두었다가 이 플래그를 다시 사용합니다. require 'bundler/setup'할 때, 번들러는 그 그룹의 gem을 무시합니다.

매개변수를 통해 Bundler.require에 사용할 그룹을 자동으로 지정하게 할 수도 있습니다. :default 그룹은 어떤 그룹에도 포함되지 않은 모든 gem을 가리킵니다. Bundler.require(:default, :development)를 불렀다면, 번들러는 :default 그룹의 모든 gem과 :development 그룹의 모든 gem을 require합니다.

기본 값으로, 레일스는 application.rb에서 Bundler.require(:default, Rails.env)를 부르는 애플리케이션을 생성합니다. Rails.envGemfile 안의 그룹을 레일스 환경과 연결합니다. 레일스 환경과 연결되지 않은 다른 그룹을 사용한고 자동으로 요청(require)하길 원한다면, Bundler.require를 부름으로써 그 그룹을 추가할 수 있습니다.

Bundler.require에서 gem 그룹을 제외하고 루비의 require를 이용해 적당한 곳에서 수동으로 요청할 수도 있다는 것을 기억하세요. 아마도 특정 gem을 사용하는데 시간이 걸리거나, 부팅할 때마다 로드할 필요 없는 경우에 이 방법을 사용할 수 있습니다.

Fork me on GitHub
Docs: Previous Version (v1.10) Current Version (v1.11)