繁体   English   中英

如何在Ruby on Rails中执行期间确定控制器变量的值?

[英]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来打印变量的值。

  1. 添加pry - move到Gemfile:gem'prey gem 'pry-moves'
  2. binding.pry插入要停止的位置
  3. 输入变量的名称以查看其值

然后继续输入c ,使用n移动到下一行或执行其他调试操作,直到您将解决问题。

如果您只需要查看值,则提出异常是最快的方法,但是值得花时间学习如何正确使用调试器。 您很少需要只看到变量的值,您可能正试图在代码中找到错误,这就是调试器的用途。

到目前为止,如果您学习如何使用调试器(谁想要读取日志文件),那么将信息发送到开发日志的速度要慢于其他两个选项。 使用记录器进行生产,您将希望看到有人打电话给您并说一切都坏了的价值。

好吧,我通常更喜欢标准的错误输出

$ stderr.print( “什么”)

它简单而且干得好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM