JRuby on RailsをWindowsで試す...が失敗するの巻

最近,自分の方向性がよーわからんようになってしまったと思いつつも,せっかく作ったDerbyプラグインを有効活用すべく,JRuby on Railsに手を出してみた。
ActiveRecord-JDBCを使ってみたかったのだよ。


結果的には,今回は挫折を味わうこととなったのだが,再チャレンジに向けて,コケたネタをメモっておく。:-(


ドライブレターのばかー


いい加減,ドライブレターなんてやめれ>Windows


ネットとかで,JRuby on Railsの動作レポを見るんだけど,みんなホントにそのまま使えたの?アタシの場合,WEBRick立ち上げただけで,こんな具合に落ちるんですが,みなさんどないでしょ?

> jruby script/server
D:/java2/jdk/jruby-1.0.1/lib/ruby/1.8/pathname.rb:420:in `realpath_rec': No such file or directory - D:/temp/ror/jrubyonrails/D: (Errno::ENOENT)
        from D:/java2/jdk/jruby-1.0.1/lib/ruby/1.8/pathname.rb:453:in `realpath'
        from D:/java2/jdk/jruby-1.0.1/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/initializer.rb:543:in `set_root_path!'
        from D:/java2/jdk/jruby-1.0.1/lib/ruby/gems/1.8/gems/rails-1.2.5/lib/initializer.rb:509:in `initialize'
        from ./script/../config/boot.rb:38:in `new'
        from ./script/../config/boot.rb:38:in `run'
        from ./script/../config/boot.rb:38
        from :1:in `require'
        from :1

ちなみに,こちらはバグレポとパッチが報告済みだったんで,まあなんとか解決(ついでに,JRUBY-1422もあてといた)。
http://jira.codehaus.org/browse/JRUBY-1401


これで手で動かす分には問題なく使える。ただ,IDEAのRubyプラグインからではサーバの起動に失敗する。理由は簡単で,IDEAのラウンチャでは,「script/server」を完全パスで指定するため,この評価が正しくできずに失敗している様子。端的に言うと,File.basename()の評価がRubyJRubyとで異なるから。ウソだと思うなら,こんなことやってみるとイイ。

>jruby -e "p File.basename('c:/')"
"c:"
>ruby -e "p File.basename('c:/')"
"/"

こちらはJRUBY-1422同様,JRuby本体にパッチを当てないといけないので,面倒くさくて直すのやめた。:-P
当然,IDEAのRubyプラグインからの利用を考えていたワケなんだが,まあJRubyにしたからといってデバッガが使えるでなし,Rubyだと普通に使えるからいいやって感じ。