什么是最好的方式为我要确定一个控制器可变的价值在执行?

例如,有一个方法我可以插入一个中断代码,并造成价值变量可以输出到屏幕(或该日志)?

有帮助吗?

解决方案

是的。最简单的方法是提高价值作为一串。像这样: 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("什么")

其简单而做的工作。

  1. 添加 撬-移动 到Gemfile: gem 'pry-moves'
  2. 插入 binding.pry 在那里你想停止
  3. 类型的变量名称看到它的价值

然后继续通过打字 c, ,转移到下一个线 n 或执行其他调试行动,直到你会解决该问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top