Nous avons récemment eu un problème où, après une série de commits, un processus backend ne s'est pas exécuté. Maintenant, nous avons été de bons petits garçons et filles et avons exécuté rake test
après chaque check-in mais, en raison de certaines bizarreries dans le chargement des bibliothèques de Rails, cela ne se produisait que lorsque nous l'exécutions directement depuis Mongrel en mode production.
J'ai trouvé le bogue et il était dû à une nouvelle gemme Rails qui écrasait une méthode dans la classe String d'une manière qui cassait une utilisation étroite dans le code Rails d'exécution.
Bref, pour faire court, existe-t-il un moyen, au moment de l'exécution, de demander à Ruby où une méthode a été définie ? Quelque chose comme whereami( :foo )
qui renvoie /path/to/some/file.rb line #45
? Dans ce cas, me dire qu'il a été défini dans la classe String ne serait pas utile, car il a été surchargé par une bibliothèque.
Je ne peux pas garantir que la source se trouve dans mon projet, donc rechercher 'def foo'
ne me donnera pas forcément ce dont j'ai besoin, sans compter que si j'ai beaucoup de def foo
Parfois, je ne sais pas jusqu'au moment de l'exécution quelle est celle que j'utilise.