Module: Switchman::ActiveRecord::Migrator

Defined in:
lib/switchman/active_record/migration.rb

Instance Method Summary collapse

Instance Method Details

#generate_migrator_advisory_lock_idObject

significant change: hash shard name, not database name



24
25
26
27
# File 'lib/switchman/active_record/migration.rb', line 24

def generate_migrator_advisory_lock_id
  shard_name_hash = Zlib.crc32(Shard.current.name)
  ::ActiveRecord::Migrator::MIGRATOR_SALT * shard_name_hash
end

#with_advisory_lock_connectionObject

significant change: strip out prefer_secondary from config



30
31
32
33
34
35
36
37
38
# File 'lib/switchman/active_record/migration.rb', line 30

def with_advisory_lock_connection
  pool = ::ActiveRecord::ConnectionAdapters::ConnectionHandler.new.establish_connection(
    ::ActiveRecord::Base.connection_db_config.configuration_hash.except(:prefer_secondary)
  )

  pool.with_connection { |connection| yield(connection) } # rubocop:disable Style/ExplicitBlockArgument
ensure
  pool&.disconnect!
end