Class: Departure::RailsAdapter::BaseAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/departure/rails_adapter.rb

Direct Known Subclasses

V7_2_Adapter, V8_0_Adapter

Class Method Summary collapse

Class Method Details

.create_connection_adapter(**config) ⇒ Object

ActiveRecord::ConnectionAdapters::Mysql2Adapter



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/departure/rails_adapter.rb', line 55

def create_connection_adapter(**config)
  mysql2_adapter = ActiveRecord::Base.mysql2_connection(config)

  connection_details = Departure::ConnectionDetails.new(config)
  verbose = ActiveRecord::Migration.verbose
  sanitizers = [
    Departure::LogSanitizers::PasswordSanitizer.new(connection_details)
  ]
  percona_logger = Departure::LoggerFactory.build(sanitizers: sanitizers, verbose: verbose)
  cli_generator = Departure::CliGenerator.new(connection_details)

  runner = Departure::Runner.new(
    percona_logger,
    cli_generator,
    mysql2_adapter
  )

  connection_options = { mysql_adapter: mysql2_adapter }

  ActiveRecord::ConnectionAdapters::DepartureAdapter.new(
    runner,
    percona_logger,
    connection_options,
    config
  )
end

.register_integrationsObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/departure/rails_adapter.rb', line 38

def register_integrations
  require 'active_record/connection_adapters/percona_adapter'

  ActiveSupport.on_load(:active_record) do
    ActiveRecord::Migration.class_eval do
      include Departure::Migration
    end

    if ActiveRecord::VERSION::MAJOR == 7 && ActiveRecord::VERSION::MINOR == 1
      require 'departure/rails_patches/active_record_migrator_with_advisory_lock_patch'

      ActiveRecord::Migrator.prepend Departure::RailsPatches::ActiveRecordMigratorWithAdvisoryLockPatch
    end
  end
end

.sql_columnObject



82
83
84
# File 'lib/departure/rails_adapter.rb', line 82

def sql_column
  ::ActiveRecord::ConnectionAdapters::DepartureAdapter::Column
end