如何确定价值的控制变量执行期间在红宝石在轨道上?
-
09-06-2019 - |
题
什么是最好的方式为我要确定一个控制器可变的价值在执行?
例如,有一个方法我可以插入一个中断代码,并造成价值变量可以输出到屏幕(或该日志)?
解决方案
是的。最简单的方法是提高价值作为一串。像这样: raise @foo.to_s
或者,你可以安装调试器(gem install ruby-debug
),然后开始发服务器的 --debugger
标志。然后,在你的代码、呼叫的 debugger
指令。
内部调试器的提示下,你有很多的命令,包括 p
印值的一个变量。
更新: 这里的 多一点红宝石-调试.
其他提示
如果你有一个控制器实例的变量 @foo
, 然后在你的控制器可以简单地做些什么,如:
logger.debug "@foo is: #{@foo}"
此外,可以输出价值在你的视图模板的使用:
<%= debug @foo %>
我更喜欢使用检查方法,像这样:
raise @foo.inspect
它具有更多的信息,比to_s,像属性的价值观。
摘要从霍Bunster,约翰*托普利,并Jaryl:
I.快速和肮脏的方式:
raise @foo.inspect
在你的控制器。或
<% raise @foo.inspect %>
在你的看法。
二。适当的记录到你 development.log
:
logger.debug "@foo == #{@foo.inspect}"
三。 完全成熟的调试:
安装调试器(gem install ruby-debug
),然后开始发服务器的 --debugger
标志。然后,在你的代码、呼叫的 debugger
指令。
内部调试器的提示下,你有很多的命令,包括 p
印值的一个变量。
提高一个例外是最快的方式如果你只需要看一个的价值,但它的价值的时间来学习如何使用调试器正常。这是罕见的,你只需要看到的只是价值的一个可变的,你很可能会试图找到代码中的缺陷,并且那是什么一个调试器。
发送的信息的发展记录的速度要慢于其他两种选择在这里这么远,如果你学习如何使用debugger(谁想要读通过登录文件)。使用记录仪生产,你想要看看有什么值是当有人打电话给你说一切都破碎。
好吧,我通常喜欢标准的错误输出
$stderr。print("什么")
其简单而做的工作。
- 添加 撬-移动 到Gemfile:
gem 'pry-moves'
- 插入
binding.pry
在那里你想停止 - 类型的变量名称看到它的价值
然后继续通过打字 c
, ,转移到下一个线 n
或执行其他调试行动,直到你会解决该问题。