JRuby 1.1.1のバグとJRuby 1.1.2のリリース

Haskellの実験を続けながら、実は裏で(というか本業で)JRubyでの開発もやっているんですが、JDBCドライバを使ってoracleに接続しようとして、どうしてもこのようなエラーが出てうまくいかない状況でした。

java.lang.NoSuchMethodError: org.jruby.Ruby.newFixnum(I)Lorg/jruby/RubyFixnum;

クラスがうまくロードされていないのかと思い、いろいろやってみたのですが、結局JRuby側のバグでした。。

This is a very funny bug.

Essentially, a new method Ruby.newFixnum(int) was added in JRuby 1.1.1+, and once mongrel is being compiled against that version, javac selects that method, not the existing Ruby.newFixnum(long), since the original argument in mongrel is indeed int.

http://jira.codehaus.org/browse/JRUBY-2563

どうやら、JRuby 1.1.1とそれに同梱されているmongrelを使った場合に、顕在化するバグのようです。JRubyの開発者/テスターは、mogrelなんて使ってない??でも、「funny bug」って。。

ということで、JRuby 1.1.2を入れてみたところ、うまくoracleにつながるようになりました。

さらに、JRuby 1.1.2は、マイナーバージョンアップにもかかわらずかなりのパフォーマンスアップが図られているとのこと。

このところのJRubyは、マイナーリリースでもかなり大きな変更が入るので、へんなバグに悩まされていて、リリースアナウンスがあったら入れ直す検討をした方がいいかも知れません。(その場合、ちゃんと元に戻す方法も用意して!そのリリースにもへんなバグが入っている可能性もありますからね :P )