Как определить, какой код Ruby-on-Rails генерирует какой-то SQL? - PullRequest
5 голосов
/ 04 октября 2011

У меня есть приложение, написанное на Ruby с использованием Rails 2.3. Мы используем ActiveRecord.

Иногда ActiveRecord генерирует довольно ужасно неэффективный SQL. Мы можем определить, какой SQL проблематичен, используя медленные журналы запросов и используя new relic . Однако может быть очень трудно определить строку кода в нашем программном обеспечении, которая генерировала проблемный SQL. Обычно это запрос, построенный с использованием ассоциаций и named_scopes.

Что мне действительно нужно, так это пометить SQL в наших файлах журналов именем файла и строкой нашего кода, который его сгенерировал (а не строкой ActiveRecord, которая выполняла запрос).

Информация должна быть доступна через массив вызывающих абонентов. Я не хочу выгружать весь массив, я просто хочу, чтобы имя файла и строка нашего кода были наиболее ответственными. Есть ли драгоценный камень, который уже делает это? Если нет, то есть предложения?

Ответы [ 3 ]

5 голосов
/ 04 октября 2011

вы должны найти вдохновение по active-record-query-trace gem

EDIT: wooops, читать слишком быстро, это для RoR 3+.> Похоже, это <работает на рельсах 2.3 </a>.Вы также можете найти вдохновение здесь .

1 голос
/ 17 сентября 2012

rack-mini-profiler содержит информацию о том, какая строка кода ruby ​​сгенерирована и какой sql-запрос.

0 голосов
/ 09 января 2012

Новая Relic предоставит вам полные трассировки стека для отдельных медленных запросов SQL с функциями Slow SQL и Transaction Traces.

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