JRuby 1.1.1 と Gem

先日のJRubyのインストールという記事では、JRuby 1.1.1をstableパッケージとして、インストール対象に選びましたが、その後gemを使おうとしたところ、以下のようなエラーが出て先に進めませんでした。

$ jruby -S gem list -r rails

*** REMOTE GEMS ***

Bulk updating Gem source index for: http://gems.rubyforge.org/
ERROR:  While executing gem ... (Gem::RemoteSourceException)
    Error fetching remote gem cache: NameError: uninitialized constant Gem::RemoteFetcher::StringIO reading http://gems.rubyforge.org/yaml

Googleで調べてみると、この記事を発見。

JRuby 1.1.1 のgemが動かない。

パッケージのバグのようです。書いてある通り、

require 'stringio'

を、jruby-1.1.1/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb に追加すると、無事動きました。

JRuby本家の対応がどうなっているかを見てみると、やはり早々に対応が済んでいました。

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

ただ、このバージョンはメジャーリリースのstable版で、このバグはかなり致命的なものなので、おそらく他のメジャーなパッケージだと、もうちょっと何かあると思います。(すぐに修正リリースされるとか、トップページに注意が記載されるとか。)

JRubyは現在かなり頻繁にリリースが行われていますし、この時点でJRubyに関わっている人たちはソースコードからビルドする人が多いようなので、そのせいかもしれませんが、現在JRubyを使おうとしている人は、このくらいは自力で解決する力が必要、ということなのかもしれません。