Отладка разрывов на "разрыве" Rails в ActiveSupport :: Callbacks.run - PullRequest
0 голосов
/ 04 марта 2010

Ruby-debug застревает из-за прерывания зарезервированного рубинового слова "break" в строке 94 activesupport-2.3.5 / lib / active_support / callbacks.rb.

  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 ломает слово "break" для каждого обратного вызова ActiveSupport. Это сделало почти всю мою отладку бесполезной, так как обратный вызов срабатывает очень часто. Я больше не могу запускать какие-либо из моих тестов 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 голосов
/ 05 марта 2010

Я узнал, почему это происходит.Я посмотрел, какой метод отвечает за запуск обратного вызова, и понял, что это один из моих методов с точкой останова «отладчик».Я просто смутился, увидев разрыв отладчика в ActiveSupport :: Callbacks.Моя точка останова отладчика была на последней строке метода, поэтому отладчик естественным образом перешел на следующую исполняемую строку, которая была в ActiveSupport :: Callbacks.run.Спасибо Игал за помощь с этим.

...