Главная/ Блог/ Quiet_assets

Видеть за деревьями лес: как мы справились с избыточными логами

May 2021

Каждый веб-разработчик в какой-то момент оказывался в подобной ситуации. Вы работаете над сайтом или приложением, и вам нужно посмотреть логи, но вы видите только запросы на изображения, таблицы стилей, шрифты и так далее — среди них невозможно разглядеть записи, которые вас интересуют.

Мы тоже столкнулись с этим в 2012 году, когда собирали приложения на Rails, используя Asset Pipeline. Всякий раз логи, сгенерированные нашими контроллерами, оказывались завалены запросами на ассеты на каждой странице.

Сейчас в Rails Asset Pipeline появился стандартный способ справиться с ситуацией, но тогда его не существовало. Руководитель наших фронтенд-разработчиков Дмитрий Карпунин стал искать решение проблемы и нашел идею на StackOverflow. Это был monkey patch, который можно было добавить в проект для фильтрации вывода записей лога.

Патч перехватывал вызовы Rails::Rack::Logger и проверял PATH_INFO в окружении запроса. Если переменная соответствовала регулярному выражению для пути к статическим ассетам, он временно повышал уровень логгера до ERROR, вызывал настоящий Rails::Rack::Logger, чтобы продолжить работу в обычном режиме, а затем восстанавливал предыдущий уровень.

Важно отметить, что при этом изменялся только порог приоритета логирования, но полностью оно не отменялось, то есть логирование должно было быть максимально устойчиво при неожиданных изменениях в Rails, в том числе из-за других monkey patch’ей.

Monkey-patching — спорное решение, а такие патчи в каждом проекте — путь к катастрофе. Хотя это казалось единственным лекарством от засорения логов сообщениями про ассеты под Rails 4, оно явно требовало лучшего способа установки. Как минимум, можно сделать пакет, что значительно упростило бы его использование другим разработчикам. Поэтому Дмитрий и его группа собрали rails quiet_assets gem. Решение быстро стало востребованным, его ежедневно использовали тысячи разработчиков, чтобы избавить свои логи от шума. 

Quiet_assets был популярен и хорошо решал проблему, с которой часто сталкивались разработчики. Как и все удачные решения, он прекрасно служил своей цели в течение нескольких лет, пока в нём не отпала надобность в Rails 5.

К 2016 году Rails эволюционировал: 9 июня Рафаэль Франса открыл Pull Request в Sprockets — gem в составе Rails, который предоставлял фреймворк для компиляции и обслуживания статического фронтенда. Он добавил функционал quiet_assets в сам Sprockets и, по словам Франса, практически обесценил gem quiet_assets.

Спустя пять лет мы полностью прекратили его поддержку. Его git-репозиторий останется доступным на Github, но новых коммитов уже не будет, как и возможности создавать сообщения об ошибках и pull request’ы — репозиторий будет существовать только для чтения, в архивном режиме.

Конечно, ещё остались какие-то старые проекты на Rails 4. Но они настолько устарели, что прекращение поддержки quiet_assets, почти наверняка наименьшая из их проблем. 

Gem quiet_assets в своё время был необходим для сообщества, чтобы повысить удобство разработки. Мы постоянно заботимся о том, насколько дружественна инфраструктура, экосистема проекта, насколько разработчикам удобно и быстро с ней работать. Работа над quiet_assets — свидетельство нашей инициативности и понимания того, что нравится и нужно разработчикам. 

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

 

Мы знаем, что современные библиотеки и технологии очень важны для проектов наших клиентов, поскольку технологии напрямую влияют на их возможности при работе с заказчиками. Цель Evrone — помочь вам выбрать наилучший технологический стек для успешной реализации вашего проекта.
Дмитрий Карпунин
Head of Frontend, Evrone.com
Будем на связи
Прикрепить файл
Максимальный размер файла: 8 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.