Ruby-debug通过打破第94行activesupport-2.3.5 / lib / active_support / callbacks.rb上的“break”ruby保留字来挂断。
def run(object, options = {}, &terminator)
enumerator = options[:enumerator] || :each
unless block_given?
send(enumerator) { |callback| callback.call(object) }
else
send(enumerator) do |callback|
result = callback.call(object)
break result if terminator.call(result, object) # This line is the culprit
end
end
end
我知道break是Ruby中的一个保留字,我很惊讶ruby-debug打破了每个ActiveSupport回调的“break”字样。这使得几乎所有的调试都没用,因为回调是非常频繁地触发的。我不再能够运行任何我的rspec测试,因为每个规范都会多次触发回调断点。
以下列出了我目前安装的所有宝石:http://pastie.org/854538
更新: 我尝试删除ruby-debug和ruby-debug-base,现在我运行我的规范时收到以下消息。我正在重新安装这些宝石。
debugger statement ignored, use -u or --debugger option on rspec to enable debugging
我不知道怎么解决这个问题。有什么想法吗?
答案 0 :(得分:0)
我发现了为什么会这样。我查看了触发回调的方法,我意识到这是我自己的一个“调试器”断点。我只是在看ActiveRepport :: Callbacks中的调试器中断时感到困惑。我的调试器断点位于方法的最后一行,因此调试器自然地转到ActiveSupport :: Callbacks.run中的下一个可执行行。感谢Igal提供的帮助。