В настоящее время я пытаюсь установить патч ActiveRecord для инкапсуляции всего сгенерированного SQL из rails / rake db: migrate, rails / rake db: reset, rails / rake db: rollback (и любого другого основного сценария управления миграцией).
Мне нужно добиться этого для следующего варианта использования:
Мы используем 2ndQuadrant PostgreSQL 11.5, и у нас есть набор репликации, и нам нужно инкапсулировать все сгенерированные SQL запросы внутри функции (https://www.2ndquadrant.com/en/resources/pglogical/pglogical-docs/#usage-subscription-management) - pglogical.replicate_ddl_command
для репликации всех данных из одной базы данных в другую.
В основном все миграции должны содержать эту функцию:
Я хотел бы внести изменения в DDL,поэтому мне нужно выполнить:
select * from pglogical.replicate_ddl_command('CREATE TABLE public.test ( id int primary key );');
select * from pglogical.replicate_ddl_command('DROP TABLE public.test;');
Приведенное выше создаст тестовую таблицу как на кластере продуктов, так и на складе ... и затем отбросит эту же таблицу с обеих сторон.
Этоработает нормально с помощью запросов. raw SQL ... но я хотел бы знать, как я могу исправить ActiveRecord, чтобы применить это поведение к нашему варианту использования.
Я читал: Показать SQL, сгенерированный pзавершение миграции в rails без обновления базы данных
Написание пользовательской задачи rake - решение, но изменение ответа сверху для PostgreSQL Adapter больше не работает (я уверен, что это из-за Rails 5).
Любые предложения приветствуются, большое спасибо и хорошего дня!