Module: Usps::Support::Db::AuxiliaryStamper

Defined in:
lib/usps/support/db/auxiliary_stamper.rb

Overview

Copies the primary test database’s schema_migrations rows into each auxiliary test database, so Rails’ pending-migration check doesn’t see the primary’s migrations as pending against schemas that don’t run them.

Class Method Summary collapse

Class Method Details

.call(io: $stdout) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/usps/support/db/auxiliary_stamper.rb', line 12

def call(io: $stdout)
  primary, auxiliary = test_configs
  return if auxiliary.empty?

  ActiveRecord::Base.connection_pool.with_connection do |connection|
    primary_versions = fetch_versions(connection, primary.database)

    auxiliary.each do |config|
      existing = fetch_versions(connection, config.database)
      (primary_versions - existing).each do |version|
        io.puts "Stamping #{version} for #{config.database}"
        connection.execute(
          "INSERT INTO #{config.database}.schema_migrations (version) VALUES (#{version.to_i})"
        )
      end
    end
  end
end