Патч ActiveRecord Миграция SQL Генератор - PullRequest
0 голосов
/ 27 сентября 2019

В настоящее время я пытаюсь установить патч 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).

Любые предложения приветствуются, большое спасибо и хорошего дня!

...