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.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +3 -1
  3. data/.pryrc +6 -6
  4. data/.standard.yml +9 -0
  5. data/AGENTS.md +9 -7
  6. data/Appraisals +8 -9
  7. data/CHANGELOG.md +7 -1
  8. data/Gemfile +8 -9
  9. data/Gemfile.lock +29 -12
  10. data/README.md +1 -1
  11. data/RELEASING.md +5 -4
  12. data/Rakefile +10 -10
  13. data/configuration.rb +3 -3
  14. data/departure.gemspec +23 -24
  15. data/gemfiles/rails_7_2.gemfile +11 -12
  16. data/gemfiles/rails_7_2.gemfile.lock +29 -12
  17. data/gemfiles/rails_8_0.gemfile +11 -12
  18. data/gemfiles/rails_8_0.gemfile.lock +29 -12
  19. data/gemfiles/rails_8_1.gemfile +10 -12
  20. data/gemfiles/rails_8_1.gemfile.lock +27 -13
  21. data/lib/active_record/connection_adapters/departure_adapter_behavior.rb +88 -0
  22. data/lib/active_record/connection_adapters/for_alter.rb +4 -4
  23. data/lib/active_record/connection_adapters/patch_connection_handling.rb +2 -2
  24. data/lib/active_record/connection_adapters/rails_7_2_departure_adapter.rb +17 -58
  25. data/lib/active_record/connection_adapters/rails_7_2_trilogy_adapter.rb +53 -0
  26. data/lib/active_record/connection_adapters/rails_8_0_departure_adapter.rb +26 -66
  27. data/lib/active_record/connection_adapters/rails_8_0_trilogy_adapter.rb +21 -0
  28. data/lib/active_record/connection_adapters/rails_8_1_mysql2_adapter.rb +7 -7
  29. data/lib/active_record/connection_adapters/rails_8_1_trilogy_adapter.rb +7 -7
  30. data/lib/departure/alter_argument.rb +6 -6
  31. data/lib/departure/cli_generator.rb +12 -12
  32. data/lib/departure/command.rb +1 -1
  33. data/lib/departure/configuration.rb +3 -3
  34. data/lib/departure/connection_details.rb +7 -7
  35. data/lib/departure/db_client.rb +5 -5
  36. data/lib/departure/dsn.rb +2 -2
  37. data/lib/departure/errors.rb +2 -2
  38. data/lib/departure/log_sanitizers/password_sanitizer.rb +1 -1
  39. data/lib/departure/logger.rb +2 -2
  40. data/lib/departure/option.rb +4 -4
  41. data/lib/departure/rails_adapter.rb +125 -102
  42. data/lib/departure/rails_patches/active_record_migrator_with_advisory_lock_patch.rb +2 -2
  43. data/lib/departure/railtie.rb +5 -5
  44. data/lib/departure/runner.rb +3 -3
  45. data/lib/departure/user_options.rb +1 -1
  46. data/lib/departure/version.rb +1 -1
  47. data/lib/departure.rb +18 -18
  48. data/lib/lhm/adapter.rb +12 -12
  49. data/lib/lhm/column_with_sql.rb +8 -8
  50. data/lib/lhm.rb +1 -1
  51. data/test_database.rb +10 -10
  52. metadata +34 -19
  53. data/.rubocop.yml +0 -66
  54. data/.rubocop_todo.yml +0 -238
  55. 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