Бывают ситуации, когда какие-либо гемы нужны при разработке и не нужны при деплое, например. В таком случае, при создании файла Gemfile, вы можете объединить эти гемы в группы. А затем при установке гемов можете указывать специальное поведение для установки этих групп. Допустим, есть такой Gemfile:

source "http://rubygems.org"
 
gem "rails", "3.0.0.rc"
gem "rack-cache", :require => "rack/cache"
gem "nokogiri", "~> 1.4.2"
 
group :development do
  gem "sqlite3-ruby"
end
 
group :production do
  gem "pg"
end

Как легко можно догадаться, он определяет группы гемов для разработки и для продакшна. В данном случае эти группы состоят из всего одного гема - SQLite для разработки и Postgres для продакшна. Чтобы не устанавливать ненужную группу гемов, используется команда с вот таким ключом (для разработки, например):

bundle install --without production

Бандлер сохранит информацию о том, что установка гемов происходила с данным флагом в файле APP_ROOT/.bundle/config. Все сохраненные бандлером настройки и опции можно посмотреть с помощью команды:

bundle config

В следующий раз когда вы воспользуетесь bundle install, бандлер запомнит ваши настройки и не будет качать ненужные гемы. Точно так же эти гемы будут недоступны в вашем приложении и не будут инклюдиться даже если они до этого были установлены в системе.

Чтобы контролировать процесс инклюда необходимых групп, при инициализации приложения вводите следующее (пример):

require "rubygems"
require "bundler"
Bundler.setup(:default, :development)
require "nokogiri"

Данная операция добавит гемы из указанных групп в load path. Далее в вашем приложении вы можете инклюдить гемы по отдельности или целые группы гемов с помощью следующего синтаксиса:

Bundler.require(:default);
# код...
# код...
Bundler.require(:development);

:default инклюдит все гемы не принадлежащие к какой-либо группе, а :development, соответственно, добавляет гемы группы development. Опять же, не рекомендуется слишком яро использовать такой интерфейс и не включать лишние гемы если они не будут использоваться в ходе выполнения приложения.

Вольный перевод официальной документации.