Rails, ActiveSupport:: Уведомления - возвращают метрики в заголовках ответов
Я работаю над отслеживанием основных метрических данных для запросов, таких как, сколько времени было потрачено в БД, рендеринг JSON и т. Д.... для инструментов разработчика / анализа, чтобы мы могли найти и исправить медленный / плохой код.
У меня простой
ActiveSupport::Notifications.subscribe /process_action.action_controller/ do |*args|
event = ActiveSupport::Notifications::Event.new(*args)
Rails.logger.info event
end
где я могу отправить метрики в файл журнала (я думаю, именно так Rails 3+ уже генерирует файлы журналов).
Однако я также хотел бы вернуть некоторые метрики обратно в заголовок ответа, чтобы каждый запрос мог видеть, сколько времени потребовалось в БД по сравнению с генерацией представлений и т. Д.
Что касается "почему", я хочу сделать это потому, что безопасность моего приложения такова, что разработчики не имеют доступа к самим метрикам, поэтому использование заголовков ответов - это дешевый способ позволить разработчикам начать просмотр некоторых основных метрик, чтобы помочь им исправить медленный код. Я понимаю, что некоторые скажут мне, что это плохая практика, и я не согласен, но мне нужно сделать это сейчас.
Конкретная проблема заключается в том, что когда этот подписчик закончил, ответ, кажется, закончен, и я не могу добавить метрики в заголовки.
Я думаю, что after_filter
в контроллере можно использовать для этого, но я борюсь с тем, как получить доступ к ActiveSupport::Notifications
Событие, на которое я подписался... насколько я знаю, нет глобального / центрального местоположения, откуда я мог бы получить эти события.
Я прочитал руководства по API и Rails, и они мало помогли в этом вопросе.
Кто-нибудь знает, как получить доступ к подписанным событиям до отправки ответа клиенту, чтобы я мог прикрепить метрики к заголовкам?