diff --git a/lib/extensions/ar_pglogical_migration.rb b/lib/extensions/ar_pglogical_migration.rb new file mode 100644 index 00000000000..d7de86526de --- /dev/null +++ b/lib/extensions/ar_pglogical_migration.rb @@ -0,0 +1,27 @@ +module ArPglogicalMigration + def migrate(direction) + PglogicalSubscription.all.each do |s| + provider_region = MiqRegion.find(s.provider_region) + + while !provider_region.migrations_ran.include?(version) do + s.disable + s.enable + sleep 1 + provider_region.reload + end + end + + super(direction) + + r = MiqRegion.my_region + if r.respond_to?(:migrations_ran=) + new_migrations = ActiveRecord::SchemaMigration.normalized_versions + new_migrations << version if direction == :up + + r.migrations_ran = new_migrations + r.save + end + end +end + +ActiveRecord::Migration.prepend(ArPglogicalMigration)