5月 092012
とある環境で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 installrubygemsに公開されていないgitリポジトリを指定したりもできるし、一発で全てのgemがインストールできるので開発環境から本番環境にデプロイするのに便利。
メジャーバージョンアップで仕様が大きく変わったgemがあっても問題ない。
require 'rubygems'これでGemfileに書かれたgemがrequireされる。
require 'bundler/setup'
Bundler.require
require 'yaml'
yamlみたいな標準で入ってるgemは自分でrequireしないとならないっぽい。