Каковы наилучшие методы отслеживания потока большого приложения rails?

Если вы новичок в большом (очень большом!) Rails-приложении, может быть очень сложно проследить поток того, что вызывает что, где определен метод и как «вникнуть», как все это работает.

Каковы наилучшие методы поиска такой информации, как:

Я нахожусь в классе Foo, и он вызывает панель методов, но в файле нет панели определения. Это должно быть каким-то образом замешано, или проблема, или обезьяна, и т. Д. Что такое шаги 1, 2, 3, где искать? Я не вижу ничего очевидного в верхней части файла, и поиск «def bar» ничего не возвращает.


person Andrew Arrow    schedule 07.05.2013    source источник
comment
Здесь был дан ответ на аналогичный вопрос: stackoverflow.com/questions/2630862/   -  person Tom L    schedule 07.05.2013
comment
Также может быть полезен foo.method(:bar).owner. И учтите, что это может быть динамический метод, и в этом случае поиск может быть бесполезен.   -  person Tom L    schedule 07.05.2013
comment
Основываясь на вашей карме, я полагаю, вы уже обнаружили подглядывание, которое действительно очень полезно для отслеживания. Я помещаю это для других, которые могут наткнуться на этот вопрос. Дайте мне знать, если вы хотите более длинный ответ.   -  person Juno Woods    schedule 07.05.2013


Ответы (2)


Метапрограммирование! Вероятно, определял методы на лету на основе переданных параметров. Бывший. define_method

person E-Shark    schedule 07.05.2013

я бы пошел с

grep "def bar" app/* lib/* -irn (optionally -l)

Если бы я был в открытом файле, я бы, скорее всего, использовал cscope, потому что я использую vim, но если вы используете IDE, это может помочь вам найти этот метод.

Или же я мог бы просто использовать отладчик, где вы можете проверять свои объекты во время выполнения.

person fotanus    schedule 07.05.2013