[英]How to determine the value of a controller variable during execution in Ruby on Rails?
在执行期间确定控制器变量值的最佳方法是什么?
例如,有没有办法可以在代码中插入一个中断,并将变量的值输出到屏幕(或日志)?
是。 最简单的方法是将值提升为字符串。 像这样: 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的总结:
I.快捷方式:
raise @foo.inspect
在你的控制器中。 要么
<% raise @foo.inspect %>
在你看来。
II。 正确登录您的development.log
:
logger.debug "@foo == #{@foo.inspect}"
III。 完整的调试 :
安装调试器( gem install ruby-debug
),然后使用--debugger
标志启动开发服务器。 然后,在您的代码中,调用debugger
指令。
在调试器提示符中,您有许多命令,包括p
来打印变量的值。
gem 'pry-moves'
binding.pry
插入要停止的位置 然后继续输入c
,使用n
移动到下一行或执行其他调试操作,直到您将解决问题。
如果您只需要查看值,则提出异常是最快的方法,但是值得花时间学习如何正确使用调试器。 您很少需要只看到变量的值,您可能正试图在代码中找到错误,这就是调试器的用途。
到目前为止,如果您学习如何使用调试器(谁想要读取日志文件),那么将信息发送到开发日志的速度要慢于其他两个选项。 使用记录器进行生产,您将希望看到有人打电话给您并说一切都坏了的价值。
好吧,我通常更喜欢标准的错误输出
$ stderr.print( “什么”)
它简单而且干得好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.