2013年02月21日

Rails3をデバックしたい

Railsの開発環境ってすごく悩むね。

有料のIDEは効率良さそうだけど(RubyMine、3rd Railなど)、とりあえずは無償で頑張る。

Eclipse3.7 + RedRails, Aptana3, NetBeans7.2 + Railsプラグイン など試した結果、

NetBeansがいいかなぁーという結論になりつつある。(コマンドはDOSでやると割りきって。)

ただ、デバックが出来ないのが厄介。。。

ということでデバックが出来る環境を求めて探索。

要するにruby-debug-ide19と、ruby-debug19があれば出来そう。

やってみる。

# gem install ruby-debug-ide19
# gem install ruby-debug19

全然うまくいかない。。。。

これらをうまくインストールするには、ruby-debug-base19と、linecache19とかが必要みたい。

更に、linecacheをインストールするためにはDevKit(ていうかビルド環境)が必要とか。。。

でも、どうもすでにビルドされたバイナリがあるっぽい?ので、こちらで進めてみる。


1. まず、下記のサイトからlinecache19-0.5.13.gem と ruby-debug-base19-0.11.26.gemをダウンロード。

http://rubyforge.org/frs/?group_id=8883

2. ダウンロードした場所でgem installする。

# gem install linecache19-0.5.13.gem

ruby-debug-base19は何やらオプション付きでする模様。Rubyのインストールディレクトリを指定。

# gem install ruby-debug-base19-0.11.26.gem -- --with-ruby-include=C:\Ruby193\include\ruby-1.9.1\ruby-1.9.3-p385

3. ruby-debug-ide19と、ruby-debug19をインストール

# gem install ruby-debug-ide19
# gem install ruby-debug19

お!今度はうまくいった。

4. ソースの修正をする。

まずは、C:\Ruby193\lib\ruby\gems\1.9.1\gems\ruby-debug-ide19-0.4.12\lib\ruby-debug-ide.rb

以下をコメントアウトし、
# $stderr.printf "Fast Debugger (ruby-debug-ide 0.4.9) listens on #{host}:#{port}\n"

以下を追加する。
$stderr.printf "Fast Debugger (ruby-debug-ide19 0.4.12) listens on #{host}:#{port}\n"

次に、C:\Ruby193\lib\ruby\gems\1.9.1\gems\ruby-debug-ide19-0.4.12\bin\rdebug-ide

以下をコメントアウトし、
# Debugger::PROG_SCRIPT = ARGV.shift

以下を追加する。
script = ARGV.shift
Debugger::PROG_SCRIPT = (script =~ /script([\\\/])rails/ ? Dir.pwd + $1 : '') + script

このままだと、デバックした時に、

Exception in DebugThread loop: undefined method `is_binary_data?' for など怒られるみたい。

原因は、String#is_binary_data? という関数が Ruby1.9.3 では削除されているためらしい。ふーん。

ということで最後に、プロジェクト内のconfig/environments/development.rb に以下のClassを追加

class String
def is_binary_data?
( self.count( "^ -~", "^\r\n" ).fdiv(self.size) > 0.3 || self.index( "\x00" ) ) unless empty?
end
end

やっと終わった。早速実行してみるが全然ブレークポイントに止まらない。。。

困った。。。参考にさせてもらったサイトを見返すとNetBeans6を使ってるところもあるなぁー。

そういえば、NetBeans7以降はRailsのサポートしてなくて、有志によるプラグインを追加してやっている。

NetBeans6のが元々サポートしてていいのかな?と思い、NetBeans6.9.1(バンドルはRuby用)をインストール。

今までと同じことをやってみたら、見事ブレークポイントで停止した(>_<)

長かった。。。今後はNetBeans6でRailsを勉強してみる。

以上
posted by hana at 18:48| Comment(0) | TrackBack(0) | Ruby関連 | このブログの読者になる | 更新情報をチェックする