NetBeans Ruby Packでデバッグ

Four Days on RailsのDay 3をNetBeansを使って試していたのですが、どこが悪くてうまく動かないのかわからない状況に陥ったのでデバッガを使ってみました。デバッガが動いたらすぐにバグが見つかって修正できたのですが、デバッガを動かせるようになるまでがたいへんでした。Ubuntuデバッグの環境を作った手順を忘れないようにメモしておきます。

1. Native RubyRailsのインストール
NetBeans Ruby PackではClassic DebuggerとFast Debuggerのどちらかを選べるようになっています。Fast DebuggerはJRubyでは動きません。Classic Debuggerで動かすことになりますが、Classicを選んでも、デバッグモードで起動するとFast Debuggerのインストールが必要とのメッセージが表示され、これをCancelすると先に進めませんでした。インストールを試みてもエラーで終了してしまってデバッグモードに入れません。結局、Native Rubyを使ってFast Debuggerを指定するしかなさそうです。
ということで、まずはRubyRailsのインストールです。UbuntuRuby on Railsの環境を作る方法はhttp://wiki.rubyonrails.org/rails/pages/RailsOnUbuntuにあるとおりです。

$ sudo apt-get install ruby rubygems irb ri rdoc ruby1.8-dev build-essential

を実行するか、Synapticパッケージマネージャを使って必要なパッケージをインストールします。rubyやgemコマンドは/usr/binにインストールされます。
次に、Railsのインストールですが、こちらはUbuntu特有の方法はなく、通常どおり

$ sudo gem install rails --include-dependencies

とすると、/usr/binにrailsコマンドがインストールされます。(とりあえずRailsもインストールしましたが、NetBeans上でRailsを使うだけの場合、railsコマンドは必要なかったかもしれません。)

Native JRubyをインストールしたら、NetBeansRuby Interpreterを変更します。Tools -> Options -> Miscellaneous -> Ruby のようにして設定ウィンドウを開いてRuby Interpreterを /usr/bin/rubyにします。Debugger engineはFast Debuggerを選んでおきます。


2. Fast Debuggerのインストール
NetBeans経由でインストールする方法はあるのですが、ruby関連ツールをすべてsudoしてインストールしているので、一般ユーザで動かしているNetBeansからはパーミッションの問題がありインストールに失敗します。Fast Debuggerを動かすのに必要なruby-debug-baseとruby-debug-ideの2つをgemコマンドを使ってインストールしました。

$ sudo gem install ruby-debug-base --include-dependencies

ここで、どのバージョンをインストールするか聞かれるので1を選択します。

Select which gem to install for your platform (i486-linux)
1. ruby-debug-base 0.9.3 (ruby)
2. ruby-debug-base 0.9.3 (mswin32)
3. ruby-debug-base 0.9.2 (mswin32)
4. ruby-debug-base 0.9.2 (ruby)
5. ruby-debug-base 0.9.1 (mswin32)
6. ruby-debug-base 0.9.1 (ruby)
7. ruby-debug-base 0.9 (mswin32)
8. ruby-debug-base 0.9 (ruby)
9. ruby-debug-base 0.8.1 (mswin32)
10. ruby-debug-base 0.8.1 (ruby)
11. ruby-debug-base 0.8 (ruby)
12. ruby-debug-base 0.8 (mswin32)
13. Cancel installation
> 1

これで、バージョン0.9.3がインストールされました。次はruby-debug-ideのインストールです。

$ sudo gem install ruby-debug-ide --include-dependencies

これで、バージョン0.1.8がインストールされました。


3. MySQLの環境設定
これまで、NetBeansに付属してくるApache Derbyを使っていたのですが、Native Rubyでは接続できません。Derbyへの接続に使っているActiveRecord-JDBCというgemがJavaに依存しているのでJRubyでしか動かないことが理由のようです。いろいろと模索したのですが、DBをMySQLに変更するのが一番簡単なので、MySQLRuby on Railsを動かす設定をしました。Ruby on Railsの設定と同じwebサイトhttp://wiki.rubyonrails.org/rails/pages/RailsOnUbuntuに設定方法があります。

$ sudo apt-get install libmysql-ruby mysql-server

を実行するだけです。インストールが終わるとすでにMySQLが動いてるので、mysqladminやmysqlコマンドを使ってパスワードの設定やユーザの登録、データベースの作成などを行います。
NetBeans上ではdatabase.ymlをmysql用に修正して、Migrationを実行します。


4. デバッグ開始
これで、デバッグモードで起動できるようになりましたので試してみます。どこかにブレークポイントを設定します。ブレークポイントは .rhtmlでも .rbでも設定できてどのようなパラメータがセットされているかなどを確認できます。Run -> Debug Main Projectを選択するとデバッグモードで動き出します。ブラウザでパラメータを入力したりボタンをクリックしたりしながら、Step OverやContinueボタンをクリックして処理を進めます。NetBeansの右下に表示されるVariablesウィンドウの "..."をクリックするとパラメータやメッセージの隠れている部分も含め、全てが表示されます。詳細はhttp://wiki.netbeans.info/wiki/view/RubyDebuggingにあります。