Stats of the Rivers

川の様子を見に行ってます。

いまどきの Ruby 書くときのテスト環境

romaji というライブラリを書いた。 - 寿司じゃないブログ という記事を書いたのだが、テスト環境について反応があったのでもうちょい詳しく書く。

RSpec

テスティングツールのデファクトスタンダード
http://rspec.info/ に行くか、The RSpec Book を読もう。

Guard

ソースコードが編集されているかを監視して、変更があった場合に自動でテストを走らせてくれる。

guard と guard-rspec を gem install して、以下のようなファイルを Guardfile という名前でプロジェクトのルートディレクトリに置き、 guard コマンドを走らせると、watch で指定したファイルの変更の監視してくれる。


guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false do
watch(%r{spec/.+_spec\.rb$})
watch(%r{lib/(.+)\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
watch(%r{lib/(.+)/.+\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
end

Growl がインストールされていて、ruby の growl gem が入っていたら、特に何もしなくてもテスト終了後に結果を Growl で通知してくれる。便利。

Travis CI

GitHub アカウントと連動して、GitHub のレポジトリに push したら勝手にビルドを走らせて通知してくれる。

GitHub アカウントでサインアップしたら、プロフィールページに GitHub に置いてるレポジトリ一覧が表示されるので CI に乗せたいレポジトリを指定する。あとは勝手に bundle install; bundle exec rake してテストを走らせてくれる。
Travis CI が強力なのは複数環境を指定してビルドしてくれるところで、例えば .travis.yml というファイルに以下のように書けば Ruby の 1.8.7、1.9.2、1.9.3 でそれぞれビルドしてくれる。

rvm:
- 1.8.7
- 1.9.2
- 1.9.3

あと みたいなのを貼れる。おしゃれ。

まとめ

Ruby で開発するときの今時のテスト環境について書いた。ローカルで Guard を走らせておいて、リモートレポジトリ (GitHub) を Travis CI で監視させておけば (あと、もちろんちゃんとテストを書いていれば)、幸せになれると思う。
Guard も Travis CI も導入コストはあんまりかからないので、さくっと入れて使い始められるはず。