2013-05-07 4 views
0

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

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

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

+0

Аналогичный вопрос был дан здесь: http://stackoverflow.com/questions/2630862/how-do-i-find-where-a-ruby-method-is-declared –

+0

Кроме того, foo.method (: bar) .владелец может быть полезен. И подумайте, что это может быть динамический метод, и в этом случае grepping может оказаться нецелесообразным. –

+1

Основываясь на вашей карме, я полагаю, вы уже обнаружили pry, что действительно полезно для отслеживания. Я рассказываю об этом другим, которые могут наткнуться на этот вопрос. Дайте мне знать, если вы хотите получить более длинный ответ. –

ответ

0

Metaprogramming! Вероятно, определены методы «на лету» на основе переданных параметров. Ex. define_method

0

Я бы с

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

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

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