在RubyMine调试器中,只需在 watch 中输入以下内容即可:

';'

或者
";"

我收到错误:



为什么是这样?据我所知,它在Rails控制台中不会发生,并且与RubyMine没有任何关系。

最佳答案

这是Ruby调试器具有与Ruby解释器不同的解析规则的结果。实际上,从irbruby命令调用的常规Ruby调试器也具有相同的行为。但是,解决方法很简单:创建由单个分号组成的字符串文字,只需在其后面加上反斜杠即可:

$ irb
> require 'debugger'
 => true
> debugger
(rdb:1) ';'
*** SyntaxError Exception: /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/irb/context.rb:166: unterminated string meets end of file
(rdb:1) '\;'
";"

请务必注意,Ruby调试器命令行解析器与irbruby解释器使用的解析器不同:它是围绕解析调试器命令(例如backtracebreak等)而设计的,而不是用于解析Ruby语言(带有如果是irb,则为类似shell的扩展名)。它对评估Ruby(或Ruby样式)表达式的支持有限。当然,这对于有效调试Ruby程序至关重要。但是,您不应期望它能够解析irbruby命令本身将能够解析或以完全相同的方式解析事物的所有内容。在某些情况下,像这样,它可以处理某些表达式,但是需要遵循调试器的解析规则(而不是Ruby语言本身)来对它们进行转义。

Rails控制台构建在irb之上,因此是Ruby Shell,并遵循Ruby语言的解析规则,就像irbruby一样。

10-06 14:21
查看更多