如何在Ruby on Rails中执行期间确定控制器变量的值?
对我而言,执行期间确定控制器变量值的最佳方法是什么?
例如,是否有一种方法可以在代码中插入一个中断,并使变量的值输出到屏幕(或者日志)?
解决方案
回答
是的。最简单的方法是将值提高为字符串。像这样: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包含更多信息。
回答
乔迪·邦斯特(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("任何")
它简单易行。