Jak znaleźć miejsce, w którym zdefiniowano metodę w czasie wykonywania?

Niedawno mieliśmy problem z tym, że po serii zatwierdzeń nie udało się uruchomić procesu zaplecza. Teraz byliśmy dobrymi chłopcami i dziewczętami i biegliśmyrake test po każdym check-in, ale z powodu pewnych dziwności w ładowaniu biblioteki Rails, wystąpiło tylko wtedy, gdy uruchomiliśmy go bezpośrednio z Mongrel w trybie produkcji.

Śledziłem błąd i to z powodu nowego gemu Railsów nadpisującego metodę w klasie String w sposób, który złamał jedno wąskie zastosowanie w kodzie Rails w czasie wykonywania.

W każdym razie, krótko mówiąc, czy istnieje sposób, aby w czasie wykonywania zapytać Rubiego, gdzie zdefiniowano metodę? Coś jakwhereami( :foo ) to wraca/path/to/some/file.rb line #45? W tym przypadku powiedzenie mi, że zostało ono zdefiniowane w klasie String, byłoby nieprzydatne, ponieważ zostało przeciążone przez jakąś bibliotekę.

Nie mogę zagwarantować, że źródło będzie mieszkać w moim projekcie, więc nie mogę się doczekać'def foo' niekoniecznie da mi to, czego potrzebuję, nie mówiąc już o tym, że mamwiele def fooCzasami nie wiem do czasu wykonania, którego mogę używać.

questionAnswers(10)

yourAnswerToTheQuestion