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()の評価がRubyとJRubyとで異なるから。ウソだと思うなら,こんなことやってみるとイイ。
>jruby -e "p File.basename('c:/')" "c:" >ruby -e "p File.basename('c:/')" "/"
こちらはJRUBY-1422同様,JRuby本体にパッチを当てないといけないので,面倒くさくて直すのやめた。:-P
当然,IDEAのRubyプラグインからの利用を考えていたワケなんだが,まあJRubyにしたからといってデバッガが使えるでなし,Rubyだと普通に使えるからいいやって感じ。