トップ «前の日記(2010/03/14 (日) ) 最新 次の日記(2010/03/16 (火) )» 編集 RSS feed

HsbtDiary


2010/03/15 (月) [長年日記]

[gem][bundler][ruby] bundler の紹介

最近は bundler というアプリケーションを動かすのに必要な gem を管理するツールが無くてはならない状態なので軽く紹介。

bundler を使うには、お約束の

gem install bundler

を実行してから、対象となるアプリケーションのルートディレクトリに下のような内容の Gemfile という名前のファイルを作成する必要がある。

source :gemcutter

group :cucumber do
   gem 'cucumber'
   gem 'webrat'
   gem 'rspec', :require => 'spec'
   gem 'rr'
   gem 'mechanize'
   gem 'hpricot'
   gem 'rspec_hpricot_matchers'
end

説明は省略するけど、だいたいわかるよね。このファイルを作成したら

bundle install

を実行すると $HOME/.bundle に必要な gem が格納される。その後に

bundle lock

して、利用する gem をロックしてから

bundle exec spec spec

とか

bundle exec rake cucumber

みたいな感じで、gem を利用してアプリケーションを実行することができる。

Gemfile の中に記述しているバージョンとかを変えた場合は

bundle unlock
bundle install
bundle lock

みたいな手順で入れ替えを行う必要があるんだけど、これは

bundle install --relock

の一行でも良い。

最近困っているのは、ロックに用いる Gemfile.lock が内部ではハッシュで管理されているせいで、複数人で使い回す場合に diff が生成されまくるというところ。この現象は何とかしたい。

こんな感じで、まだまだドキュメントも少なくて、困ったらソースを読むという状態ではあるんだけど、やりたいことが bundler で実現できそうな人は使ってみると良いと思います。