Ruby 2.0.0-p0がリリースされた今、「Rubyist にできること」といえば、使っているRubyプログラムをとりあえずRuby 2.0.0-p0で動かしてみることですよね!
というわけで、手始めにGitLabを試してみると、rake gitlab:checkで派手に失敗するのを手元でも確認したので、落ちている原因のgritを調べました。
問題は二つあって、一つ目はString#ordが使えるかの判定がバージョン番号が1.9かどうかという条件で2.0(以降)が考慮されていなかったので、method_defined?を使って書き換えました。 もう一つは、デフォルトのエンコーディングがASCII-8BITからUTF-8になった関係で、
PACK_IDX_SIGNATURE = "\377tOc"
という定数の扱いでうまくうごかなくなっていたので、Ruby 2.0.0 の注意点やその他の新機能を参考にして、String#bと使いつつ、それが無い環境用には定義するように変更しました。 これでgritのテストが1.9と2.0の両方で通るのを確認して、早速pull requestを出しました。
すると、「次の(rubyの)パッチレベルを待つべきじゃね?」と言われたので、顔真っ赤にして(←誇大広告)、公式アナウンスにも「TEENY が 0 ですが、1.9.0 と違い、2.0.0 は『安定版』リリースであることに ご注意ください。ライブラリ作者には 2.0.0 をサポートすることを推奨します。 」って書いてありますよ! とアピールしたら、めでたく採用されました。 しかもすぐに、gritをruby 2.0でもtravisでCIする変更がコミットされていたので、ちゃんと2.0でテストが通るように、mochaのバージョンを上げてまたpull requestを送っておきました。
GitLab 5.0のリリースは約一ヶ月後なので、今からせっせとRuby 2.0でテストを走らせたり運用したりして、「GitLab 5.0はRuby 2.0で使うのがあたりまえ」になるといいですね。 GitLabに興味のある方はぜひご一緒に。
何はともあれ、お手元の .travis.yml に rvm 行がある人は、とりあえず 2.0.0 を追加してみてはいかがでしょうか(今のところまだ 2.0.0-rc1 っぽいけど)。