调试中断了Rails在ActiveSupport :: Callbacks.run中的“中断”

时间:2010-03-04 18:40:52

标签: ruby-on-rails ruby activesupport

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

我不知道怎么解决这个问题。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了为什么会这样。我查看了触发回调的方法,我意识到这是我自己的一个“调试器”断点。我只是在看ActiveRepport :: Callbacks中的调试器中断时感到困惑。我的调试器断点位于方法的最后一行,因此调试器自然地转到ActiveSupport :: Callbacks.run中的下一个可执行行。感谢Igal提供的帮助。