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 foo
Czasami nie wiem do czasu wykonania, którego mogę używać.