その他
    ホーム 技術発信 DoRuby Ruby on Railsでruby-debugを使ってデバッグしよう

    Ruby on Railsでruby-debugを使ってデバッグしよう

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    こんにちは、KBMJの中平@railsエンジニアです。

    今回はruby on railsのデバッグ方法を紹介しようと思います。

    以前、aptanaでrailsをデバッグ実行するという記事を書いたのですが、そもそもコンソール上でのデバッグ方法を書いてないなと思ったので書きたいと思います。

    いろいろなruby on rails のデバッグ方法はあると思いますが、今回は個人的に便利なデバッグな方法だと思ってる

     ruby-debugというライブラリを利用してのruby on railsのデバッグ方法を説明いたします。

    ruby on rails のバージョンによって導入・利用方法が若干違いますので、分けて説明いたします。

    まずRails1系の場合を書きます。

    debuggerを利用するデバッグ方法


    1.gem install ruby-debug

    2.development.rbに

     『require ‘ruby-debug’ 

      Debugger.start 

     の2行を記述

    3.デバッグしたいソースコードの場所に

      『debugger』、viewの場合は『 <% debugger %> 』

     と記述する。

    4.webrickを起動(ruby script/server)して、アプリ実行


    5.debuggerと書いたところでアプリが勝手に止まる(一時停止)ので


    6.webrickを動かしているコンソールでデバッグ用コマンドをたたく

    • デバッグのコマンド一例
    • l[ist] ソースの表示。
    • var l[ocal] ローカル変数一覧表示。
    • pp 変数名 変数の表示。
    • f[rame] コールスタック表示
    • s[tep] ステップイン実行
    • n[ext] ステップオーバー実行
    • c[ont] 実行再開

    コマンドをたたくことにより変数の一覧や実際の値を見れたり、ステップ実行してプログラムの動きを確認することができます。

    その他にもデバッグ用コマンドはありますので、以下のサイト(ruby リファレンス)を参考にしてください。

    http://www.ruby-lang.org/ja/man/html/debug.html

    webrickじゃなくてmongrel使ってるよという人のために

    mongrelをそのまま起動しても、デバッグできないので、mongrelを使ったデバッグ方法も記述します。

    1.config/debug.rb とか適当なファイルを新しく作る

    2.新しく作ったファイルに

      『require ‘ruby-debug’
      Debugger.start

      の2行を記述

    3.mongrelを起動させる時に

    以下のコマンドでmongrelを起動させると、mongrelでもdebuggerを使ってruby on railsのデバッグができるようになります。

    mongrel_rails start -S config/debug.rb

    4.debuggerと書いたところでアプリが勝手に止まる(一時停止)ので


    5.アプリを動かしているコンソールでデバッグ用コマンドをたたく

    この方法が便利なのは、デバッグを動かすスクリプトを別ファイルにしているのでデバッグをうごかしたくないときは、

    monbrel_rails start 

    で実行すればデバッグをしないので、ruby script/serverで動かす方法よりデバッグする・しないの切り替えが楽です。

    (注意:デバッグコードは後でちゃんと消したほうがいいと思う)

    Rails2.0以上の場合

    rails2系は ruby-debugが正式にサポートされていますので、簡単にデバッグすることができます。

    1.gem install ruby-debug 2.デバッグしたいソースコードの場所に

      『debugger』、viewの場合は『 <% debugger %> 』

     と記述する。

    3.アプリをデバッグモードで起動(ruby script/server -u)して、アプリ実行

    4.debuggerと書いたところでアプリが勝手に止まる(一時停止)ので


    5.アプリを動かしているコンソールでデバッグ用コマンドをたたく

    rails2系だとデバッグ起動オプションがあるので、rails1系を使うよりかなり楽にデバッグできますね。

    ちなみにruby script/server したときにmongrelをいれてたらmongrelで起動します。 

    ruby-debugを利用してデバッグ作業を行うと、ruby on railsのデバッグが簡単になると思いますので、ぜひ皆さんも試してみてはいかがでしょうか?