在RubyMine调试器中,只需在 watch 中输入以下内容即可:
';'
或者
";"
我收到错误:
为什么是这样?据我所知,它在Rails控制台中不会发生,并且与RubyMine没有任何关系。
最佳答案
这是Ruby调试器具有与Ruby解释器不同的解析规则的结果。实际上,从irb
或ruby
命令调用的常规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调试器命令行解析器与
irb
或ruby
解释器使用的解析器不同:它是围绕解析调试器命令(例如backtrace
,break
等)而设计的,而不是用于解析Ruby语言(带有如果是irb
,则为类似shell的扩展名)。它对评估Ruby(或Ruby样式)表达式的支持有限。当然,这对于有效调试Ruby程序至关重要。但是,您不应期望它能够解析irb
或ruby
命令本身将能够解析或以完全相同的方式解析事物的所有内容。在某些情况下,像这样,它可以处理某些表达式,但是需要遵循调试器的解析规则(而不是Ruby语言本身)来对它们进行转义。Rails控制台构建在
irb
之上,因此是Ruby Shell,并遵循Ruby语言的解析规则,就像irb
和ruby
一样。