Gemfile(or Gemfile.lock)の記述に従って依存gemをシステムにインストール.
$ bundle install
システムではなく任意のパスにgemをインストール.
$ bundle install --path vendor/bundle
任意のパスにインストールした場合、ロードパス解決はbundlerによって行われる. コマンド実行する場合はbundle exec
を利用.
$ bundle exec rspec
Rubyコード上でロードパスを追加する場合.
require 'bundler/setup'
require 'nokogiri'
任意のグループのみ対象とする場合はBundler.setup
メソッドを利用する.
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
グループまとめてrequireするBundler.require
メソッドもある.
require 'bundler'
Bundler.require(:default, Rails.env)
--path
指定でinstallした後は設定が保存され、以降のコマンドは該当パスに対して実行される. システムへのインストールに戻す--system
オプションもある.
$ bundle install --system
なお保存された設定はbundle config
コマンドで確認することができ、実体は.bundle/config
に書き出される.
$ bundle config
Settings are listed in order of priority. The top value will be used.
path
Set for your local app (/path/to/project/.bundle/config): "vendor/bundle"
disable_shared_gems
Set for your local app (/path/to/project/.bundle/config): "1"
bin
Set for your local app (/path/to/project/.bundle/config): "./bin"
$ cat .bundle/config
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_BIN: ./bin
なお.bundle
フォルダはバージョン管理には含めずGemfile
とGemfile.lock
はバージョン管理する.
installしたgemはGemfile.lock
でバージョンが固定される. それを無視して最新のgemを取得するにはupdateを利用する.
$ bundle update # update all gems
$ bundle update nokogiri # nokogiri gem only
Gemfile.lock
の内容に従って、システムや他アプリケーションとは隔離して依存gemをインストールする.
$ bundle install --deployment
$ bundle package
しておくとその環境でインストールした.gem
をvender/cache
にぶち込んでくれて、--deployment
時はcacheからインストールを行う.
$ bundle package
$ git add vendor/cache
Capistranoを利用しているのであればdeploy.rb
に以下を記述して$ cap deploy
でOK.
require 'bundler/capistrano'
autorequiringではGemfile
に記述したgem名がrequireされる. gem名がrack-cache
だけど実際にrequireするのがrake/cache
な場合は:require
オプションを利用.
gem 'rack-cache', :require => 'rack/cache'
また複数requireしなければならないケースではArrayで指定すればよい.
gem "redis", :require => ["redis/connection/hiredis", "redis"]
autorequiringされなくするにはfalse
を指定すればよい.
gem "webmock", :require => false