2010-03-04 3 views
0

94 번째 줄의 "break"루비 예약어를 깨서 Ruby 디버그를 중단합니다. activesupport-2.3.5/lib/active_support/callbacks.rb .ActiveSupport :: Callbacks.run에서 Rails의 "break"에 대한 디버깅 중단

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 

나는 휴식이 루비에서 예약어 알고 난 루비 - 디버그 각 ActiveSupport 콜백의 단어 "휴식 시간"에 침입하는 것을 surpirsed입니다. 콜백이 매우 자주 발생하므로 디버깅이 거의 필요 없게되었습니다. 콜백 중단 점이 각 사양에 대해 여러 번 트리거되므로 더 이상 내 rspec 테스트를 실행할 수 없습니다. http://pastie.org/854538

업데이트 : 내가 루비 디버그 및 루비 - 디버그 받침대를 제거 할 시도하고 내 사양을 실행 어느 때 지금은 다음과 같은 메시지가 여기에

내 현재 설치된 보석의 모든 목록입니다. 내가 필요로 할 때 나는이 보석들을 다시 설치하고있다.

 
debugger statement ignored, use -u or --debugger option on rspec to enable debugging 

이 문제를 해결하는 방법을 모르겠습니다. 어떤 아이디어?

답변

0

왜 이런 일이 발생했는지 알았습니다. 콜백을 트리거하는 메소드가 어떤 메소드인지 살펴 보았습니다.이 메소드는 콜백을 "디버거"중단 점이있는 내 자신의 것임을 알았습니다. ActiveSupport :: Callbacks에서 디버거가 중단되는 것을 혼란스럽게 보았습니다. 내 디버거 중단 점은 메서드의 마지막 줄에 있으므로 디버거는 자연스럽게 ActiveSupport :: Callbacks.run에 있던 다음 실행 줄로 이동했습니다. Igal에게 도움을 주신 것에 감사드립니다.

관련 문제