Довольно часто техническим менеджерам, тестировщикам и разработчикам приходится исследовать, какие артефакты остаются в базах данных после разных процессов. Особенно если вы исследуете группу связанных сервисов, инкапсулирующих большое количество бизнес-логики со времен динозавров.
Gaudi — консольная утилита, позволяющая автоматизировать отслеживание изменений данных в базах PostgreSQL и генерировать человекочитаемые отчеты.
- В конфигурационном файле
config.yml
указываются настройки соединения для каждой БД, с которой мы будем работать. - При запуске с аргументом
-a install
утилита стучится в каждую БД и создает для каждой таблицы в схемеpublic
триггеры наinsert
,update
,delete
. - Затем она создает в схеме
temp
таблицуgaudi_log_table
, куда будут записываться измененные данные. - После этого делаем запрос в сервисы через API (или как они у вас работают) и смотрим в таблицу
gaudi_log_table
, в нее запишутся все изменения со всех таблиц. - Генерируем отчет с параметром
-a report
, он будет сохранен в директории./reports
. - После изучения удалить все триггеры и таблицу с логами можно запуском утилиты с параметром
-a uninstall
.
Накатить отслеживание изменений:
bundle exec ruby gaudi.rb -d service1,service2 -a install
Сгенерировать HTML-отчет об изменениях в директорию ./reports
bundle exec ruby gaudi.rb -d service1,service2 -a report
Откатить отслеживание изменений:
bundle exec ruby gaudi.rb -d service1,service2 -a uninstall
- Установить Ruby не ниже версии 3.0 с помощью любого менеджера версий: RVM или rbEnv.
- Склонировать репозиторий
git clone https://github.com/creadone/gaudi.git
. - Перейти в директорию репозитория
cd gaudi
. - Установить модули проекта
bundle install
. - Запустить
bundle exec ruby gaudi.rb -d service1,service2 -a install
.
Иногда RVM ругается и выплевывает при сборке Ruby в качестве ошибки что-то невнятное, в этом случае нужно проверить версию openssl и при необходимости установить свежую.
В локальном репозитории выполнить git pull