[Ruby1.9]Ruby1.8とRuby1.9で、同時にユニットテストを実行する

Ruby1.8.7が2013年6月でサポート打ち切りだそうです。
一方でRuby1.9系の方も、1.9.3のリリースが間近になるなどだんだん枯れてきてるみたいですね。


、、、、Ruby1.9系への移行に失敗した人挙手(´・ω・`)ノシ
、、ほらもっといるだr(ry

わたしは、String廻りの仕様変更にヤラれて、まだ1.8メインです。。
(使ってる文字コードの範囲外の値使おうとすると例外が出たり、Rails3.0系でエラーが出まくったり)
いつかは移行しなくちゃいけない、、でも、1.8系で作ってると1.9で出るエラーを取れない、把握できない。。
というジレンマ(´・ω・`)

そこで、Ruby1.8とRuby1.9同時にユニットテストテストするシェルスクリプトを書いてみました。

#!/usr/bin/env sh
rvm use 1.9.3
rspec $*
rvm use 1.8.7
rspec $*
rvm use --default


これをrvspecという名前でパスの通った場所に保存して、実行権限を'chmod +x rvspec' みたいに与えてやれば、アプリとして実行出来るようになります。
そしたら

$ rvspec spec/fuwa_spec.rb

で、1.8と1.9両方のテストを実行してくれます。ひゃっほい。(*´ω`*)
(もちろん、"rspec" って書かれてるところを"ruby -Ku"のように書き換えれば、test/unitでも使えますよ。)

$ rvspec -c spec/fuwa_spec.rb 
Using /Users/fuwa/.rvm/gems/ruby-1.9.3-preview1
...................

Finished in 0.31321 seconds
19 examples, 0 failures
Using /Users/fuwa/.rvm/gems/ruby-1.8.7-p352
...................

Finished in 0.27964 seconds
19 examples, 0 failures
Using /Users/fuwa/.rvm/gems/ruby-1.8.7-p352

はからずも、1.8系と1.9系のベンチマークにもなります。
(このプログラムだと、1.9系のほうが12%速いみたいですね)


たった5行のプログラムですが、Ruby1.9系への移行を支援してくれてます。


※上記スクリプトRubyの環境を複数共存させるrvmが入っている前提です。rvmについては、id:mirakuiさんが詳しく書かれています。
参考URL:http://d.hatena.ne.jp/mirakui/20100502/1272849327