Rails 2.3.8, Ruby 1.8.6: получение визуального дерева вызовов / графика того, что методы вызывают как? - PullRequest
6 голосов
/ 01 марта 2011

У меня среднее приложение на Rails.Главный контроллер (тот, который делает то, что должно делать приложение) имеет единственный метод действия.(Это не стандартное приложение RESTful; оно действует как посредник, и существуют внешние ограничения на то, как оно может быть вызвано.)

Однако, оно имеет , имеет много методов и числофильтров и постоянно растущий набор тестов.Со временем структура значительно изменилась, и у меня больше нет уверенности в том, что некоторые ожидания Mocha, которые были установлены для ранее написанных тестов, по-прежнему актуальны.

В приложении работают несколько человек, поэтому яСоздаю кулинарную книгу для написания функциональных тестов.«Используйте [эти] ожидания и утверждения, когда вы хотите протестировать с / без [этих] побочных эффектов» и т. Д.

Дерево / график вызовов будет чрезвычайно полезен при составлении такого документа.Помимо фильтров, такие могут даже быть статически получены из источников - чем-то, что знало о модели Rails «все знают обо всем», так что, возможно, статическая не очень хорошая идея.: -)

Я пытался использовать RubyProf с моими функциональными тестами для получения дерева вызовов, но все, что я получаю, это деревья, относящиеся к методам тестирования и частям ядра и Rails - и ни один из контроллеровметоды.(По крайней мере, я этого не нашел; профилирование создает множество маленьких файлов вместо одного большого.)

Ошибка при поиске методов контроллера может быть связана с тем, как действиеметод вызывается - через send, а не через какой-то более «нормальный» механизм.

Бла, бла, бла ... просто к сведению, что я пробовал до сих пор.

Есть ли хороший инструмент для построения блок-схемы "кто звонит и что" для дерева Rails 2.3.8?

Спасибо!

1 Ответ

3 голосов
/ 03 марта 2011

Вы пробовали https://github.com/tmm1/rbtrace? Я не пробовал это с Rails, поэтому я не уверен, что это сработает в вашем случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...