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

我更喜欢像这样使用检查方法:

raise @foo.inspect

它比 to_s 有更多的信息,比如属性值。

于 2008-09-13T18:05:07.253 回答
3

Jordi Bunster、John Topley 和 Jaryl 的总结:

一、又快又脏的方式:

raise @foo.inspect

在您的控制器中。或者

<% raise @foo.inspect %>

在你看来。

二、正确记录给您development.log

logger.debug "@foo == #{@foo.inspect}"

三、全面调试

安装调试器 ( gem install ruby-debug),然后使用--debugger标志启动开发服务器。然后,在您的代码中,调用该debugger指令。

在调试器提示中,您有许多命令,包括p打印变量的值。

于 2008-09-15T14:34:51.270 回答
0

如果您只需要查看一个值,则引发异常是最快的方法,但值得花时间学习如何正确使用调试器。您很少只需要查看变量的值,您可能会尝试在代码中查找错误,而这就是调试器的用途。

如果您学习如何使用调试器(谁想通读日志文件),则将信息发送到开发日志比这里的其他两个选项中的任何一个都慢。使用记录器进行生产,当有人打电话给你并说一切都坏了时,你会想看看价值是多少。

于 2008-09-15T14:42:12.797 回答
0

好吧,我通常更喜欢标准错误输出

$stderr.print("随便")

它很简单并且可以完成工作。

于 2008-09-16T12:40:35.170 回答
0
  1. 撬动添加到 Gemfile:gem 'pry-moves'
  2. binding.pry在要停止的地方插入
  3. 键入变量的名称以查看其值

然后继续键入c,移至下一行n或执行其他调试操作,直到您解决问题。

于 2018-05-01T10:19:01.997 回答