departure 8.1.0 → 8.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +3 -1
- data/.pryrc +6 -6
- data/.standard.yml +9 -0
- data/AGENTS.md +9 -7
- data/Appraisals +8 -9
- data/CHANGELOG.md +7 -1
- data/Gemfile +8 -9
- data/Gemfile.lock +29 -12
- data/README.md +1 -1
- data/RELEASING.md +5 -4
- data/Rakefile +10 -10
- data/configuration.rb +3 -3
- data/departure.gemspec +23 -24
- data/gemfiles/rails_7_2.gemfile +11 -12
- data/gemfiles/rails_7_2.gemfile.lock +29 -12
- data/gemfiles/rails_8_0.gemfile +11 -12
- data/gemfiles/rails_8_0.gemfile.lock +29 -12
- data/gemfiles/rails_8_1.gemfile +10 -12
- data/gemfiles/rails_8_1.gemfile.lock +27 -13
- data/lib/active_record/connection_adapters/departure_adapter_behavior.rb +88 -0
- data/lib/active_record/connection_adapters/for_alter.rb +4 -4
- data/lib/active_record/connection_adapters/patch_connection_handling.rb +2 -2
- data/lib/active_record/connection_adapters/rails_7_2_departure_adapter.rb +17 -58
- data/lib/active_record/connection_adapters/rails_7_2_trilogy_adapter.rb +53 -0
- data/lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb +26 -66
- data/lib/active_record/connection_adapters/rails_8_0_trilogy_adapter.rb +21 -0
- data/lib/active_record/connection_adapters/rails_8_1_mysql2_adapter.rb +7 -7
- data/lib/active_record/connection_adapters/rails_8_1_trilogy_adapter.rb +7 -7
- data/lib/departure/alter_argument.rb +6 -6
- data/lib/departure/cli_generator.rb +12 -12
- data/lib/departure/command.rb +1 -1
- data/lib/departure/configuration.rb +3 -3
- data/lib/departure/connection_details.rb +7 -7
- data/lib/departure/db_client.rb +5 -5
- data/lib/departure/dsn.rb +2 -2
- data/lib/departure/errors.rb +2 -2
- data/lib/departure/log_sanitizers/password_sanitizer.rb +1 -1
- data/lib/departure/logger.rb +2 -2
- data/lib/departure/option.rb +4 -4
- data/lib/departure/rails_adapter.rb +125 -102
- data/lib/departure/rails_patches/active_record_migrator_with_advisory_lock_patch.rb +2 -2
- data/lib/departure/railtie.rb +5 -5
- data/lib/departure/runner.rb +3 -3
- data/lib/departure/user_options.rb +1 -1
- data/lib/departure/version.rb +1 -1
- data/lib/departure.rb +18 -18
- data/lib/lhm/adapter.rb +12 -12
- data/lib/lhm/column_with_sql.rb +8 -8
- data/lib/lhm.rb +1 -1
- data/test_database.rb +10 -10
- metadata +34 -19
- data/.rubocop.yml +0 -66
- data/.rubocop_todo.yml +0 -238
- data/lib/active_record/connection_adapters/rails_8_1_adapter_behavior.rb +0 -64
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module ActiveRecord
|
|
2
|
-
module ConnectionAdapters
|
|
3
|
-
module Rails81AdapterBehavior
|
|
4
|
-
class SchemaCreation < ActiveRecord::ConnectionAdapters::MySQL::SchemaCreation
|
|
5
|
-
def visit_DropForeignKey(name) # rubocop:disable Naming/MethodName
|
|
6
|
-
fk_name =
|
|
7
|
-
if name =~ /^__(.+)/
|
|
8
|
-
Regexp.last_match(1)
|
|
9
|
-
else
|
|
10
|
-
"_#{name}"
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
"DROP FOREIGN KEY #{fk_name}"
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def self.included(adapter_class)
|
|
18
|
-
adapter_class.const_set(:SchemaCreation, SchemaCreation)
|
|
19
|
-
adapter_class.extend(ClassMethods)
|
|
20
|
-
adapter_class.include ForAlterStatements unless adapter_class.method_defined?(:change_column_for_alter)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
module ClassMethods
|
|
24
|
-
def new_client(config)
|
|
25
|
-
original_client = super
|
|
26
|
-
|
|
27
|
-
Departure::DbClient.new(config, original_client)
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# add_index is modified from the underlying mysql adapter implementation to ensure we add ALTER TABLE to it
|
|
32
|
-
def add_index(table_name, column_name, options = {})
|
|
33
|
-
index_definition, = add_index_options(table_name, column_name, **options)
|
|
34
|
-
execute <<-SQL.squish
|
|
35
|
-
ALTER TABLE #{quote_table_name(index_definition.table)}
|
|
36
|
-
ADD #{schema_creation.accept(index_definition)}
|
|
37
|
-
SQL
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# remove_index is modified from the underlying mysql adapter implementation to ensure we add ALTER TABLE to it
|
|
41
|
-
def remove_index(table_name, column_name = nil, **options)
|
|
42
|
-
return if options[:if_exists] && !index_exists?(table_name, column_name, **options)
|
|
43
|
-
|
|
44
|
-
index_name = index_name_for_remove(table_name, column_name, options)
|
|
45
|
-
|
|
46
|
-
execute "ALTER TABLE #{quote_table_name(table_name)} DROP INDEX #{quote_column_name(index_name)}"
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def schema_creation
|
|
50
|
-
self.class::SchemaCreation.new(self)
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
private
|
|
54
|
-
|
|
55
|
-
# rubocop:disable Metrics/ParameterLists
|
|
56
|
-
def perform_query(raw_connection, sql, binds, type_casted_binds, prepare:, notification_payload:, batch: false)
|
|
57
|
-
return raw_connection.send_to_pt_online_schema_change(sql) if raw_connection.alter_statement?(sql)
|
|
58
|
-
|
|
59
|
-
super
|
|
60
|
-
end
|
|
61
|
-
# rubocop:enable Metrics/ParameterLists
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|