# These gems are in the :default group 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]
$ bundle install --without test development
Bundler.require(:default, :development)
Bundler.require(:default, Rails.env)
require 'rubygems' require 'bundler' Bundler.setup(:default, :ci) require 'nokogiri'Learn More: Bundler.setup
mysql2
or pg
. In this example, you might not have MySQL
or Postgres installed on your development machine, and want bundler to skip it.
To do this, you can group your dependencies:
source 'http://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
group:
$ bundle install --without production
--without
production
. For curious readers, bundler stores the flag in
APP_ROOT/.bundle/config
. You can see all of the settings that bundler saved
there by running bundle config
, which will also print out global settings
(stored in ~/.bundle/config
), and settings set via environment variables.
For more information on configuring bundler, please see:
bundle config
If you run bundle install
later, without any flags, bundler will remember
that you last called bundle install --without production
, and use that flag
again. When you require 'bundler/setup'
, bundler will ignore gems in these
groups.
You can also specify which groups to automatically require through the parameters to
Bundler.require
. The :default
group includes all gems not
listed under any group. If you call Bundler.require(:default, :development)
,
bundler will require
all the gems in the :default
group, as
well as the gems in the :development
group.
By default, a Rails generated app calls Bundler.require(:default,
Rails.env)
in your application.rb
, which links the groups in your
Gemfile
to the Rails environment. If you use other groups (not linked to a
Rails environment), you can add them to the call to Bundler.require
, if you
want them to be automatically required.
Remember that you can always leave groups of gems out of Bundler.require
,
and then require them manually using Ruby's require
at the appropriate
place in your app. You might do this because requiring a certain gem takes some time,
and you don't need it every time you boot your application.