Bundler で gem を管理する。
なぜ Bundler を使うのか
gem は更新頻度が高く、互換性が無くなってアプリケーションが動かなくなったりする場合があります。
その問題を解決できるのが Bundler という gem 管理ツールです。
また、開発チームのメンバー間で環境構築の際に どのバージョンの gem をインストールするかを Bundler に任せることができます。
Ruby 自体のバージョンは、プロジェクト毎に rbenv で管理する。
gem のバージョンは、プロジェクト毎に Bundler で管理する。
というイメージです。
個別にインストールすべきものとそうでないもの
共通でインストールしても良いもの(グローバルインストール)
・最新であれば良いもの
・基本的な機能しか使わないもの
プロジェクト個別でインストールすべきもの(ローカルインストール)
・バージョンが頻繁に上がるもの
・指定のバージョンでしか動かないもの
・個別のプロジェクトでのみ使うもの
Ruby の環境にインストールされている gem の確認
ここから、root で作業。
グローバルインストールされているものをリストアップ
# rbenv exec gem list
gem がグローバルインストールされていた場合、一度綺麗にするため、default gem 以外を消します。
# gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'`
Bundler のインストール
Bundler はグローバルインストールします。
# gem install bundler Fetching: bundler-1.8.2.gem (100%) Successfully installed bundler-1.8.2 Parsing documentation for bundler-1.8.2 Installing ri documentation for bundler-1.8.2 Done installing documentation for bundler after 3 seconds 1 gem installed
Bundler を使った gem のローカルインストール
ここから、一般ユーザー(ここでは dev1)で作業。
/home/dev1/example に rails をローカルインストールしてみます。
まずは、bundle init で GemFile のひな形を作成。
GemFile とは、Bundler が管理する gem のリスト。
$ pwd /home/dev1/example $ bundle init Writing new Gemfile to /home/dev1/example/Gemfile
作成されたひな形の中身はこんな感じです。
$ cat Gemfile # A sample Gemfile source "https://rubygems.org" # gem "rails"
とりあえず、rails をインストールするので vi か何かでコメントを外します。
$ cat Gemfile # A sample Gemfile source "https://rubygems.org" gem "rails" ← コメント外した
準備ができたら、Bundler で Gemfile に書かれている gem をインストールします。
$ bundle install --path=vendor/bundle --binstubs=bundle_bin Fetching gem metadata from https://rubygems.org/........... Fetching version metadata from https://rubygems.org/.. Resolving dependencies... Using rake 10.4.2 … Installing rails 4.2.0 Bundle complete! 1 Gemfile dependency, 36 gems now installed. Bundled gems are installed into ./vendor/bundle.
オプションの説明
[ --path=vendor/bundle ]
指定したディレクトリ内に gem がインストールされます。
ここで、パスを指定しないとグローバルインストールになるので注意すること。
[ --binstubs=bundle_bin ]
Bundler が使うスクリプトの位置を指定するオプション。
この指定が無いと、rbenv-binstubs が効かなくなります。
ローカルインストール済みの gem のリストを表示する。
$ bundle list Gems included by the bundle: * actionmailer (4.2.0) * actionpack (4.2.0) … * rails (4.2.0) …
ローカルインストールができました。
インストールした gem のバージョン確認。
$ rails -v Rails 4.2.0
↑
本来なら、bundle exec rails -v としなければ、ローカルインストールされた gem のコマンドは参照できません。
rbenv-binstubs プラグインのおかげで、bundle exec が省略可能となっています。

Ruby on Rails 4アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/28
- メディア: Kindle版
- この商品を含むブログ (1件) を見る

Ruby on Rails 4 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (5件) を見る

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/10/31
- メディア: Kindle版
- この商品を含むブログ (1件) を見る

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る
[参考]
橋本商会 » Ruby書くならBundler使え
Rails開発環境の構築(rbenvでRuby導入からBundler、Rails導入まで)(Macport編) - Qiita
Ruby2.0でgemを全てアンインストールする - Qiita
[ruby]最初に知っておけば良かったbundlerの使い方 rails編 | Into my web
Qoosky - rbenvおよびbundlerの基本的な使用方法
rbenv + ruby-build を system-wide にインストールする - @kyanny's blog
全ユーザーで共通のrbenv+ruby-buildを使用する環境を構築する - 一分一秒真剣勝負!