Недавно у нас возникла проблема, когда после серии коммитов серверный процесс не запускался. Теперь мы были хорошими мальчиками и девочками и бегали rake test
после каждой регистрации, но из-за некоторых странностей в загрузке библиотеки Rails это происходило только тогда, когда мы запускали ее непосредственно из Mongrel в производственном режиме.
Я отследил ошибку, и это произошло из-за того, что новый драгоценный камень Rails переписал метод в классе String способом, который нарушил одно узкое использование в коде Rails времени выполнения.
В любом случае, если коротко, есть ли способ, во время выполнения, спросить Ruby, где был определен метод? Что-то подобное whereami( :foo )
возвращается /path/to/some/file.rb line #45
? В этом случае, сказать мне, что он был определен в классе String, было бы бесполезно, потому что он был перегружен какой-то библиотекой.
Я не могу гарантировать, что источник живет в моем проекте, поэтому поиск 'def foo'
не обязательно даст мне то, что мне нужно, не говоря уже о том, есть ли у меня их много def foo
, иногда я не знаю до времени выполнения, какой из них я могу использовать.