とある環境でbundle installしてsystemにインストールされたrubygemを使う様にしたら、Bundler.requireがエラー出すようになった。

bundler-1.1.3/lib/bundler/runtime.rb:77:in `require': private method `gsub' called for nil:NilClass (NoMethodError)


プロジェクトローカルにインストールしたらエラーが出なくなった。
bundle install --path gems


■Bundler
最近はbundlerというgemの管理機構が使われている。

Gemfileというテキストファイルを作って、プロジェクトで使用するRubygemsを書いておく。

Gemfile
source :rubygems

gem 'sinatra', '>=1.3'
gem 'twitter'
gem 'oauth', '0.4.5'
gem 'json'
バージョン指定ができる。

bundle install
rubygemsに公開されていないgitリポジトリを指定したりもできるし、一発で全てのgemがインストールできるので開発環境から本番環境にデプロイするのに便利。
メジャーバージョンアップで仕様が大きく変わったgemがあっても問題ない。


require 'rubygems'
require 'bundler/setup'
Bundler.require
require 'yaml'
これでGemfileに書かれたgemがrequireされる。
yamlみたいな標準で入ってるgemは自分でrequireしないとならないっぽい。