有料の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を勉強してみる。
以上