Ruby1.9.3-p0とRails3.2.0でDebuggerが使えないのを何とかした

2012年1月20日Ruby On Railsさんがめでたく3.2.0リリースとなっております。
そして、公式ページではRuby1.9.3が推奨されているという事態です。

色々と忙しい毎日なのでRails3.1は華麗にスルーしてみたのですが、
そろそろ追いかけないと取り残されそうな気もします。
「逃げちゃダメだ、逃げちゃダメだ。」
どこかで聞き覚えがある台詞ですが、まさにそんな心境。

ということで、真新しい環境を構築してみたのですが、なんとDebuggerさんが使えなくなってます。
これを使ってないという事は、みんなどうやってデバッグしてるの?と問い合わせたいのですが、
今回は意外とスカッと対策がわかったので書いておきます。

が、先にオチを書いておくと暫定です。公式にはこの問題は解決していない様子です。

もしかして、この機能って誰も使ってないの?
なんていう気もしますが、誰かの役に立ついいな。


ruby-debug19をbundle installすると、一緒に入るGemがどうやら1.9.3に対応していないようです。

ということで、
http://rubyforge.org/frs/?group_id=8883
ここから

linecache19-0.5.13.gem
ruby-debug-base19-0.11.26.gem

をダウンロードして、gem installします。

なお、base19の方だけ、以下のようにしてます。

$ gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=/Users/yuya_lush/.rbenv/source/ruby-1.9.3-p0

上記はMacOSXにrbenvを入れ、ruby-1.9.3-p0のソースを置いたパスを指定していますので、適時変更して下さい。

最後にRails3.2で生成したGemfileにて

gem 'ruby-debug19', :require => 'ruby-debug'
gem 'ruby-debug-base19', '0.11.26'

と指定します。最後の行がポイントです。
これを書かないと0.11.25がロードされてしまい、サーバを起動できません。

最後に

rails s --debugger

でサーバを起動し、ブレイクしたいところにdebuggerと書けばデバッグし放題です。

注意があります。
0.11.26のコミットコメントを見たところ
「まだ完璧じゃなくて"where"が使えないんだよねー」
と書かれてました。
つまり、debuggerで止っているときに、listとかppとか使って様子を見ると思いますが、whereとコマンドを打つとサーバがエラーで緊急停止してしまいます。ご注意下さい。

ということで、多分そのうち正式な対応がされて、こんなことしなくても良くなると思いますが、全国1億3千万人のruby-debuggerがないと開発できない人のために捧げます。


参考URL
http://blog.wyeworks.com/2011/11/1/ruby-1-9-3-and-ruby-debug