記事の引越しから漏れていたのでサルベージ。 [secondlifeさんの記事](http://d.hatena.ne.jp/secondlife/20061010/1160453355) に反応して後で書こうかなあと思っていたら、大分時間がたってしまいましたが、めげずに書いてみます。
1. p/pp
こちらはRailsに限らず良く使われている方法ですが、RailsではWebサーバをフォアグラウンドプロセスとして立ち上げた状態で使う感じになります。 pre>> $ ./script/server <
2. logger.debug
さて、続いてlogger.debugを使う方法です。 pre>> logger.debug "something interesting information" <
>
$ tail -f log/development.log
<
3. script/console
script/consoleは、実行時にデータベースの中身がどうなっているかを知りたい時に非常に便利です。script/consoleコマンドを実行すると、Railsの環境を読み込んだ状態でirbが立ち上がるので、ActiveRecordを使ってfindしたりcreateしたりdestroy_allしたり、好きなようにDBをいじる事ができます。本当に素晴らしい機能ですね。
4. script/breakpointer
script/consoleはとても素晴らしいのですが、アクション実行中のsessionの状態を調べたりするのには使えません。そんな時は、script/breakpointerを使う事ができます。 pre>> $ ./script/breakpointer <
>
class FooController < ApplicationController
  def bar
    # something
    breakpoint
    # something
  end
<
5. better rails debugger
script/breakpointerはとても便利ですが、ステップ実行が出来ないという問題があります。 実際にステップ実行がどうしても必要という場面はあまり無いのですが、あればあったほうが便利ですね。そんな時は、ruby-debugというGemを使います。 これは前回のRails勉強会のときにyuguiさんから教えていただいた方法なのですが、まずはruby-debugをインストールします。 pre>> # gem install ruby-debug <
>
class FooController < ApplicationController
  def bar
    # something
    debugger
    # something
  end
<
6. test/autotest
Ruby on Railsでは、テスト用のフレームワークがはじめから使える状態になっています。 テスト駆動開発では、テストを書いてから実装を書きますが、適当な動作検証用のコードをテストとして書くことで、デバッグに使う事もできます。この際、毎回テストをrakeコマンドから実行するのは時間が掛かるので、ZenTestのautotestを使うのがお勧めです。 autotestを使うと、編集されたファイルに関連するテストだけを実行してくれるので、rakeコマンドを実行するよりも軽快なレスポンスが得られます。さらにredgreenを併用すると気分良くデバッグを行う事ができるのでお勧め。
7. tail -f log/development.log&; autotest
最後に、僕が今使っている方法を紹介します。 開発用とは別に一つターミナルを立ち上げて、RAILS_ROOTで以下のコマンドを実行。 pre>> $ tail -f log/development.log&; autotest <
というわけで、Railsでデバッグを行う方法の紹介でした。
posted by genki genki on Wed 21 Nov 2007 at 12:39 with 0 comments