У меня есть приложение, которое использует Ruby 1.8. 6 в приложении Rails 2.2.2.Как получить метод, который обрабатывает вызов метода
В нем много определений метода url_for
в различных частях базы кода (классы, модули и т. Д.).
При отладке, я хотел бы увидеть в журнале, какой метод обрабатывает конкретный вызов url_for
. Например,
foo = "bar"
baz = url_for(foo)
#would like to log the location of the url_for method which actually
#handled the call, here.
Это нормально, если единственный способ сделать это, чтобы вызвать исключение внутри url_for
и посмотреть на трассировки стека, например
baz = url_for(something_which_wont_raise_here_but_will_raise_inside_the_url_for_method)
Чтобы идти дальше, что, если этот метод является называется на экземпляре (сильно исправленный) класса:
foo = @baz.bar("qux")
EDIT: Я не уточнил, что это Руби 1.8.6 в моем вопросе, и это выглядит как я не могу использовать .source_location
метод. Очень жаль, что раньше не указывал версию! У кого-нибудь есть другие идеи?
Не ясно. Вы хотите знать, где определяется метод (т. Е. Какой метод вызывается) или где вызывается метод? – sawa
Это: «где метод определен (т. Е. Какой метод вызывается)» –
Надеюсь, вы знаете, что эта версия Ruby не была сохранена для * очень * долгого времени и содержит множество незафиксированных ошибок, в том числе, но не ограниченные, дыры в безопасности. –