実行中にコントローラ変数の値を決定する最良の方法は何ですか?
たとえば、コードにブレークを挿入して、変数の値を画面 (またはログ) に出力する方法はありますか?
実行中にコントローラ変数の値を決定する最良の方法は何ですか?
たとえば、コードにブレークを挿入して、変数の値を画面 (またはログ) に出力する方法はありますか?
はい。最も簡単な方法は、値を文字列として大きくすることです。そのようです:raise @foo.to_s
または、デバッガー ( ) をインストールしてから、フラグgem install ruby-debug
を使用して開発サーバーを起動することもできます。--debugger
次に、コードでdebugger
命令を呼び出します。
デバッガー プロンプト内にp
は、変数の値を出力するコマンドなど、多くのコマンドがあります。
更新: ruby-debug についてもう少し詳しく説明します。
という名前のコントローラーインスタンス変数がある場合、@foo
コントローラーで次のようなことを簡単に実行できます。
logger.debug "@foo is: #{@foo}"
さらに、次を使用してビュー テンプレートに値を出力できます。
<%= debug @foo %>
次のように inspect メソッドを使用することをお勧めします。
raise @foo.inspect
属性値など、to_s よりも多くの情報があります。
Jodi Bunster、John Topley、および Jaryl からの要約:
I. 手早く汚れた方法:
raise @foo.inspect
あなたのコントローラーで。または
<% raise @foo.inspect %>
あなたの見解で。
Ⅱ.あなたへの適切なロギングdevelopment.log
:
logger.debug "@foo == #{@foo.inspect}"
III. 本格的なデバッグ:
デバッガーをインストールし ( gem install ruby-debug
)、--debugger
フラグを指定して開発サーバーを起動します。次に、コードでdebugger
命令を呼び出します。
デバッガー プロンプト内にp
は、変数の値を出力するコマンドなど、多くのコマンドがあります。
まあ、私は通常、標準エラー出力を好みます
$stderr.print("なんでも")
そのシンプルで仕事をします。
値を確認する必要があるだけの場合は、例外を発生させるのが最速の方法ですが、デバッガーの適切な使用方法を学ぶ時間は価値があります。変数の値を確認するだけでよいということはめったにありません。コードのバグを見つけようとしている可能性が高く、それがデバッガーの目的です。
開発ログへの情報の送信は、デバッガーの使用方法を習得している場合 (ログ ファイルを読みたい場合)、これまでのところ他の 2 つのオプションのいずれよりも遅くなります。ロガーを本番用に使用します。誰かがあなたに電話して、すべてが壊れていると言ったときの値を確認したいと思うでしょう。