この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
こんにちは、KBMJの中平@railsエンジニアです。
今回はruby on railsのデバッグ方法について説明したいと思います。
通常、rails開発のデバッグは「ruby script\brekpointer」を使ったり、ruby-debugで「debugger」を利用していると思います。
しかし!私はaptanaというIDEで開発をしておりますので、今回は
aptana使っている人のみが出来るrailsのデバッグ方法を説明します!
まあ、何かといいますと、[eclipse]や[visual studio]にもある、デバッグ実行モードがaptanaにもありますので、それを使ったrailsのデバッグ方法を説明します。
知ってる人にはたいした技術情報ではないのですが、IDEに慣れていない人はデバッグ実行の存在を知らないことも多いので、これを機にaptana使いをひそかに増やしたい・・・
■デバッグ準備
aptanaのインストール方法はaptanaのインストールと使い方についてを見てください。
デバッグに必要なものをインストール
・ruby-debug-base
・ruby-debug-ide
これがないと、aptanaでrailsをデバッグ実行できず、エラーが出ていたので調べたところ、こちらのサイトを参考にさせていただきました。
http://programmer-toy-box.sblo.jp/article/7977379.html
以下のようにインストールします。
gem install ruby-debug-base –include-dependencies
gem install ruby-debug-ide –include-dependencies
■rubyのデバッグの設定
aptanaのウィンドウ→設定→Ruby→デバッガーのUse ruby-debug libraryをチェック。
■railsをデバッグモードで起動してみる
1.aptanaのサーバービューを開く(aptanaのウィンドウ→ビューの表示→サーバー を選択)
2.サーバービュー上で右クリック→追加 で起動したいprojectのサーバー設定をします。
(すでにある人は作らなくてもいいです。)
3.通常railsは右矢印アイコンで起動ですが、ここで虫アイコンをクリックすることでrailsをデバッグモードで起動します。
■ブレイクポイントを設定して、指定した箇所でrailsを止めてみる。
エディターで止めたい行の左端のグレーの部分をダブルクリックすると、青く丸いアイコンが付きます。
これがブレイクポイントとなり、デバッグ起動時にこの場所でrailsが一時停止してくれます。
これは、デバッグ起動中に追加しても問題ありません。
画像の左端の青い丸印がそれです。
■ブレイクポイントで停止したらなにがうれしいの?
デバッグ実行時にブレイクポイントでrailsが一時停止するとaptanaのデバッグウィンドウが表示されます。
デバッグウィンドウで出来ることは
1.railsで使っている変数の中身がすべて見ることが出来ます。
インスタンス変数は、selfという変数の中に色々入っていまして、sessionの値やuriなど、rails自体のインスタンス変数も取得できます。
またローカル変数も問題なく見ることが出来ます。
2.ステップ実行できる
バグが発生したときなど、怪しい部分を1行ずつ実行して動作確認することが出来ます。
ステップ実行方法
デバッグウィンドウのメニューに実行という項目がありその中にステップ実行するボタンがあります。
・ステップインは外部メソッドなどがあればその中に入ってさらに1行ずつ実行
(ライブラリを使っていればその中も1行ずつ実行できます)
・ステップオーバーは外部メソッドの中には入らずそのメソッドのみを実行
・ステップリターンは外部メソッドに入ってもとの呼び出し元に戻りたいときに使います。
ステップ実行をやめて処理を再開する際は、同じくメニューの実行から再開というボタンをクリックすることで通常にrailsが動作します。
3.メソッドの呼び出し順番がわかる。
今いるメソッドがどこから呼び出されているのか、また何を呼び出しているのかが一目でわかります。
まとめますと、
変数の中身を見ながらプログラムの処理を1行ずつ追いかけることが出来ますので、大変便利なrailsのデバッグ方法だと思います。
このように、変数の中身が見ることが出来ます。
■aptanaのデバッグモードにおけるデメリット
デバッグモードは通常モードよりメモリやCPUを消費します。
私のマシンもメモリ1Gの時には重くて使えなかったのですが、2Gにしてみたら問題なく使えました。(PCの性能によりますので、各自試してみてください)
aptanaでrailsの開発している方はこのデバッグ方法も使ってみてはいかがでしょうか?