2010-03-04 2 views
0

Ruby-debug se bloque en cassant le mot "break" ruby ​​réservé sur la ligne 94 activeupport-2.3.5/lib/support_support/callbacks.rb .Déboguer les ruptures sur le "break" de Rails dans ActiveSupport :: Callbacks.run

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 

Je sais rupture est un mot réservé dans Ruby et je suis surpris par sa propreté que le rubis debug se brise sur le mot « rupture » pour chaque rappel ActiveSupport. Cela a rendu presque tout mon débogage inutile car le rappel est déclenché très fréquemment. Je ne peux plus exécuter aucun de mes tests rspec car le point d'arrêt de rappel est déclenché plusieurs fois pour chaque spécification.

Voici une liste de tous mes bijoux installés: http://pastie.org/854538

Mise à jour: J'ai essayé de supprimer ruby-debug et debug base ruby ​​et maintenant je reçois le message suivant à chaque fois que je lance mes spécifications. Je réinstalle ces gemmes comme j'en ai besoin.

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

Je ne sais pas comment contourner cela. Des idées?

Répondre

0

J'ai découvert pourquoi cela se produit. J'ai regardé quelle méthode était responsable du déclenchement du rappel et j'ai réalisé que c'était l'un des miens avec un point de rupture de "débogueur". J'étais juste confus pour voir le débogueur casser dans ActiveSupport :: Callbacks. Mon point de rupture du débogueur était à la dernière ligne de la méthode, donc le débogueur est naturellement allé à la prochaine ligne exécutable qui était dans ActiveSupport :: Callbacks.run. Merci à Igal pour l'aide avec ça.

Questions connexes