在执行期间确定控制器变量值的最佳方法是什么?
例如,有没有一种方法可以在代码中插入中断,并导致变量的值输出到屏幕(或日志)?
在执行期间确定控制器变量值的最佳方法是什么?
例如,有没有一种方法可以在代码中插入中断,并导致变量的值输出到屏幕(或日志)?
是的。最简单的方法是将值提升为字符串。像这样:raise @foo.to_s
或者,您可以安装调试器 ( gem install ruby-debug
),然后使用--debugger
标志启动开发服务器。然后,在您的代码中,调用该debugger
指令。
在调试器提示中,您有许多命令,包括p
打印变量的值。
更新:这里有更多关于 ruby-debug 的信息。
如果您有一个名为 的控制器实例变量@foo
,那么在您的控制器中,您可以简单地执行以下操作:
logger.debug "@foo is: #{@foo}"
此外,您可以使用以下方式在视图模板中输出值:
<%= debug @foo %>
我更喜欢像这样使用检查方法:
raise @foo.inspect
它比 to_s 有更多的信息,比如属性值。
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
打印变量的值。
如果您只需要查看一个值,则引发异常是最快的方法,但值得花时间学习如何正确使用调试器。您很少只需要查看变量的值,您可能会尝试在代码中查找错误,而这就是调试器的用途。
如果您学习如何使用调试器(谁想通读日志文件),则将信息发送到开发日志比这里的其他两个选项中的任何一个都慢。使用记录器进行生产,当有人打电话给你并说一切都坏了时,你会想看看价值是多少。
好吧,我通常更喜欢标准错误输出
$stderr.print("随便")
它很简单并且可以完成工作。