8

実行中にコントローラ変数の値を決定する最良の方法は何ですか?

たとえば、コードにブレークを挿入して、変数の値を画面 (またはログ) に出力する方法はありますか?

4

7 に答える 7

11

はい。最も簡単な方法は、値を文字列として大きくすることです。そのようです:raise @foo.to_s

または、デバッガー ( ) をインストールしてから、フラグgem install ruby-debugを使用して開発サーバーを起動することもできます。--debugger次に、コードでdebugger命令を呼び出します。

デバッガー プロンプト内にpは、変数の値を出力するコマンドなど、多くのコマンドがあります。

更新: ruby​​-debug についてもう少し詳しく説明します。

于 2008-09-13T17:56:16.683 に答える
6

という名前のコントローラーインスタンス変数がある場合、@fooコントローラーで次のようなことを簡単に実行できます。

logger.debug "@foo is: #{@foo}"

さらに、次を使用してビュー テンプレートに値を出力できます。

<%= debug @foo %>
于 2008-09-13T17:57:15.590 に答える
5

次のように inspect メソッドを使用することをお勧めします。

raise @foo.inspect

属性値など、to_s よりも多くの情報があります。

于 2008-09-13T18:05:07.253 に答える
3

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は、変数の値を出力するコマンドなど、多くのコマンドがあります。

于 2008-09-15T14:34:51.270 に答える
0

まあ、私は通常、標準エラー出力を好みます

$stderr.print("なんでも")

そのシンプルで仕事をします。

于 2008-09-16T12:40:35.170 に答える
0

値を確認する必要があるだけの場合は、例外を発生させるのが最速の方法ですが、デバッガーの適切な使用方法を学ぶ時間は価値があります。変数の値を確認するだけでよいということはめったにありません。コードのバグを見つけようとしている可能性が高く、それがデバッガーの目的です。

開発ログへの情報の送信は、デバッガーの使用方法を習得している場合 (ログ ファイルを読みたい場合)、これまでのところ他の 2 つのオプションのいずれよりも遅くなります。ロガーを本番用に使用します。誰かがあなたに電話して、すべてが壊れていると言ったときの値を確認したいと思うでしょう。

于 2008-09-15T14:42:12.797 に答える