from jeweler to bundler

2009/01くらいから自作のgemの管理にはjewelerを使ってきたのですが、この度selectable_attrのruby-1.9.2対応をするのを景気にbundlerを使うようにしてみました。

結果、とてもいい感じなので今後はbundlerへどんどん乗り換えたいと思います。

動機 gemの開発環境構築を簡単にしたい

数ヶ月に1回とかひどいと年に1回くらいしかメンテしないgemの場合、だいたいテストやビルドするための
環境は毎回作り直す感じなので、簡単に開発環境を作りたいところなのですが、jewelerではその機能はありません。
いや、あるのかもしれないけど、rails3でbundle installでたいてい一発でインストールできることを体感してしまったので、
やっぱりbundle installで必要なgemをインストールしたいというのが一番大きな動機です。

目標

  • bundle installで環境が整う
  • ruby-1.8.7とruby-1.9.2で動く
  • rspecrcovがちゃんと動く

手順

1. Rakefile
http://github.com/akm/selectable_attr/blob/master/Rakefile

2. Gemfile
参考
http://github.com/akm/selectable_attr/blob/master/Gemfile

個人的には、
:testのグループは、gemのユーザーが動作がうまくいかないときに動作確認のためにrake specを実行するためのgemを定義します。
:developmentのグループは、開発者が普段使用するgemを記述します。

3. spec/spec_helper.rb
https://github.com/akm/selectable_attr/blob/master/spec/spec_helper.rb

現時点でruby-1.9.2でrcovを動かすためには、 http://d.hatena.ne.jp/nedate/20101004/1286183882 で紹介されているパッチを適用しなければなりません。

やってみて思ったこと

jewelerになれているので、バージョンをどう上げるのか迷ったんですが、そのまま.gemspecを自分で変えれば良いみたい。
依存関係が増えたときに、jewelerが生成してくれていた.gemspecの記述を自分で書かなきゃならないので、ちょっと不安。
でもやっぱりスッキリできて良かった。