data_migrate 9.2.0 → 10.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +3 -2
  3. data/.github/workflows/gempush.yml +8 -6
  4. data/.gitignore +2 -3
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +14 -0
  7. data/Appraisals +5 -5
  8. data/Changelog.md +2 -33
  9. data/README.md +5 -7
  10. data/data_migrate.gemspec +1 -1
  11. data/gemfiles/{rails_7.1.gemfile → rails_6.0.gemfile} +1 -1
  12. data/gemfiles/rails_6.1.gemfile +1 -1
  13. data/lib/data_migrate/data_migrator.rb +23 -11
  14. data/lib/data_migrate/data_schema.rb +2 -2
  15. data/lib/data_migrate/data_schema_migration.rb +7 -24
  16. data/lib/data_migrate/database_tasks.rb +5 -28
  17. data/lib/data_migrate/legacy_migrator.rb +22 -0
  18. data/lib/data_migrate/migration_context.rb +8 -11
  19. data/lib/data_migrate/schema_dumper.rb +1 -1
  20. data/lib/data_migrate/schema_migration.rb +4 -5
  21. data/lib/data_migrate/status_service.rb +4 -4
  22. data/lib/data_migrate/tasks/data_migrate_tasks.rb +15 -14
  23. data/lib/data_migrate/version.rb +1 -1
  24. data/lib/data_migrate.rb +1 -1
  25. data/spec/data_migrate/data_migrator_spec.rb +14 -17
  26. data/spec/data_migrate/data_schema_migration_spec.rb +8 -25
  27. data/spec/data_migrate/data_spec.rb +1 -1
  28. data/spec/data_migrate/database_tasks_spec.rb +19 -34
  29. data/spec/data_migrate/legacy_migrator_spec.rb +38 -0
  30. data/spec/data_migrate/migration_context_spec.rb +8 -15
  31. data/spec/data_migrate/schema_dumper_spec.rb +3 -6
  32. data/spec/data_migrate/schema_migration_spec.rb +6 -13
  33. data/spec/data_migrate/status_service_spec.rb +4 -7
  34. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +14 -13
  35. data/spec/db/data/20091231235959_some_name.rb +1 -1
  36. data/spec/db/data/20171231235959_super_update.rb +1 -1
  37. data/spec/db/migrate/20131111111111_late_migration.rb +1 -1
  38. data/spec/db/migrate/20202020202011_db_migration.rb +1 -1
  39. data/tasks/databases.rake +38 -17
  40. metadata +14 -15
  41. data/Gemfile.lock +0 -148
  42. data/gemfiles/rails_6.1.gemfile.lock +0 -227
  43. data/gemfiles/rails_7.0.gemfile.lock +0 -229
  44. data/gemfiles/rails_7.1.gemfile.lock +0 -262
  45. data/lib/data_migrate/rails_helper.rb +0 -79
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 98382ecfcd0ad635d3e53bb746f4b2a7a402c2b2a78d312e864bbe6f288b65b1
4
- data.tar.gz: 315d89e1465e7f5a804d4e70d67963949608632b91b7276ea23319f2183789ba
3
+ metadata.gz: d212f0e6fa0c9b767cbdf17854c7c52d640a9c8611d0b10ed6c0460de68985cd
4
+ data.tar.gz: ac338ef447f1942d64eb5cf6c0fe520f71089968c04fb03fb829a1318534b4eb
5
5
  SHA512:
6
- metadata.gz: '04098142838de3bb59be85adc46a9a4aed734668a154378488c74ea2a1982793a45450364f089edb479add87cab1b47e801916553c01ad003bbe71c0ba06b855'
7
- data.tar.gz: 4654fdfb138a53c5cc4ff59df1d63bc66ccd0f66d292f79c0d37ccbdb43c184144d5122718e9027ea643f1e0786d79844aee44d70feb5a1c455a59670286e5ef
6
+ metadata.gz: 01ae940433e4cd51a2f421297fb3ffb72372503971ee906164129c035c89aedb6c18d5003cd083930c24245f16728c38c93aed94fb8d9b2f7d0288895362a3d4
7
+ data.tar.gz: 9d94ff40ed274256247960c0dd1325645b638ac2198d29b3bce2c3c11f842b4b0a2b381bd73fcb17af308ab366cdca16c7f99c9e2fa778da7ab6103352e50ba1
@@ -11,13 +11,14 @@ jobs:
11
11
  matrix:
12
12
  os: [ "ubuntu-20.04" ]
13
13
  ruby:
14
+ - '2.7'
14
15
  - '3.0'
15
16
  - '3.1'
16
17
  - '3.2'
17
18
  gemfile:
19
+ - gemfiles/rails_6.0.gemfile
18
20
  - gemfiles/rails_6.1.gemfile
19
21
  - gemfiles/rails_7.0.gemfile
20
- - gemfiles/rails_7.1.gemfile
21
22
  runs-on: ubuntu-latest
22
23
  env:
23
24
  BUNDLE_GEMFILE: ${{ matrix.gemfile }}
@@ -31,4 +32,4 @@ jobs:
31
32
  ruby-version: ${{ matrix.ruby }}
32
33
  bundler-cache: true
33
34
  - name: Run tests
34
- run: bundle exec rspec
35
+ run: bundle exec rspec
@@ -1,8 +1,10 @@
1
- name: Release Gem
1
+ name: Ruby Gem
2
2
 
3
3
  on:
4
- release:
5
- types: [released]
4
+ push:
5
+ branches:
6
+ - main
7
+ - chaunce-multiple_connection_support
6
8
 
7
9
  jobs:
8
10
  build:
@@ -11,10 +13,10 @@ jobs:
11
13
 
12
14
  steps:
13
15
  - uses: actions/checkout@master
14
- - name: Set up Ruby 3.2
15
- uses: ruby/setup-ruby@v1
16
+ - name: Set up Ruby 2.6
17
+ uses: actions/setup-ruby@v1
16
18
  with:
17
- ruby-version: '3.2'
19
+ version: 2.6.x
18
20
 
19
21
  - name: Publish to RubyGems
20
22
  run: |
data/.gitignore CHANGED
@@ -1,12 +1,11 @@
1
1
  /.rvmrc
2
2
  *.gem
3
+ *.lock
3
4
  gemfiles/.bundle
4
5
  spec/db/test.db
5
6
  spec/db/other_test.db
6
7
  spec/db/data_schema.rb
7
8
  .vscode/
8
9
  .DS_Store
9
- .ruby-gemset
10
- .ruby-version
11
10
  .idea/
12
- vendor/
11
+ vendor/
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.7.5
data/.travis.yml ADDED
@@ -0,0 +1,14 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.7
4
+ - 3.0
5
+ - 3.2
6
+ script: bundle exec rspec
7
+ gemfile:
8
+ - gemfiles/rails_6.0.gemfile
9
+ - gemfiles/rails_6.1.gemfile
10
+ - gemfiles/rails_7.0.gemfile
11
+ jobs:
12
+ exclude:
13
+ - rvm: 3.0
14
+ - rvm: 3.2
data/Appraisals CHANGED
@@ -1,11 +1,11 @@
1
+ appraise 'rails-6.0' do
2
+ gem 'rails', '~> 6.0.0'
3
+ end
4
+
1
5
  appraise 'rails-6.1' do
2
6
  gem 'rails', '~> 6.1.0'
3
7
  end
4
8
 
5
9
  appraise 'rails-7.0' do
6
- gem 'rails', '~> 7.0.0'
7
- end
8
-
9
- appraise 'rails-7.1' do
10
- gem 'rails', '7.1.0'
10
+ gem 'rails', '~> 7.0'
11
11
  end
data/Changelog.md CHANGED
@@ -1,44 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## 9.2.0
4
- - Support Rails 7.1 https://github.com/ilyakatz/data-migrate/pull/278
5
- - Build and test against 7.1.0.rc1 https://github.com/ilyakatz/data-migrate/pull/286
6
-
7
- ## 9.1.0
8
-
9
- - Fix a bug that caused `schema_sha1` in `ar_internal_metadata` to be reset to the `data_schema.rb` file. (#272)
10
- - Remove the need for empty data_schema files for non-primary databases. (#273)
11
-
12
- ## [YANKED] 10.0.3.rc
13
-
14
- - Remove all travis references [leoarnold](https//:github.com/leoarnold)
15
- - Changing to rc because of ongoing discussion how to properly handle multiple database environments
16
-
17
- ## [YANKED] 10.0.2
18
-
19
- Change "rails" dependencies to "railties"
20
-
21
- ## [YANKED] 10.0.1
22
-
23
- - Bug fix for Rails 6 config [chaunce](https//:github.com/chaunce)
24
- - Railties bug fix by [opti](https://github.com/opti)
25
-
26
- ## [YANKED] 10.0.0
27
-
28
- Releasing 10.0.0
29
-
30
- !!! Breaking changes !!!
31
-
32
- - This version introduces a breaking change which may lead to undesired
33
- behavior in multi-database environments. See https://github.com/ilyakatz/data-migrate/issues/181
34
-
35
- ## [YANKED] 10.0.0.rc1
3
+ ## 10.0.0.rc1
36
4
 
37
5
  - Changes by [chaunce](https//:github.com/chaunce)
38
6
  - Multiple databases support
39
7
  - Refactor to clean things up
40
8
  - Deprecate rails 5.2 support for real
41
9
 
10
+
42
11
  ## 9.0.0
43
12
 
44
13
  Ruby 3.2 support [mehanoid](https://github.com/mehanoid)
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  - [![Version](http://img.shields.io/gem/v/data_migrate.svg?style=flat-square)](https://rubygems.org/gems/data_migrate)
4
4
  - [![License](http://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](http://opensource.org/licenses/MIT)
5
- - ![.github/workflows/build.yml](https://github.com/ilyakatz/data-migrate/actions/workflows/.github/workflows/build.yml/badge.svg)
5
+ - [![Travis](https://img.shields.io/travis/ilyakatz/data-migrate.svg)](https://travis-ci.org/ilyakatz/data-migrate)
6
6
  - [![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)
7
7
 
8
8
  Run data migrations alongside schema migrations.
@@ -12,7 +12,7 @@ migrations, except they should be reserved for data migrations. For
12
12
  instance, if you realize you need to titleize all your titles, this
13
13
  is the place to do it.
14
14
 
15
- ![directory tree example](./screenshot.png)
15
+ ![Travis](./screenshot.png)
16
16
 
17
17
  ## Why should I use this?
18
18
 
@@ -36,7 +36,7 @@ table to track all migrations.
36
36
 
37
37
  ## Rails Support
38
38
 
39
- Support Rails 6.1 through 7.1
39
+ Support Rails 6.0 through 7.0
40
40
 
41
41
 
42
42
  #### v1
@@ -96,9 +96,7 @@ Tasks work as they would with the 'vanilla' db version. The 'with_data' addition
96
96
 
97
97
  With 'up' and 'down', you can specify the option 'BOTH', which defaults to false. Using true, will migrate both the data and schema (in the desired direction) if they both match the version provided. Again, going up, schema is given precedence. Down its data.
98
98
 
99
- When using `rake db:migrate:with_data` migrations will be run in ascending order by their version. For example, if you have a data migration with version 20230410000000 and a schema migration with version 20230415000000, expect the data migration to run first.
100
-
101
- `rake db:migrate:status:with_data` provides an additional column to indicate which type of migration.
99
+ `rake db:migrate:status:with_data` provides and additional column to indicate which type of migration.
102
100
 
103
101
  ### Configuration
104
102
 
@@ -164,9 +162,9 @@ Run tests for a specific version of Rails
164
162
 
165
163
  ```
166
164
  bundle exec appraisal install
165
+ bundle exec appraisal rails-6.0 rspec
167
166
  bundle exec appraisal rails-6.1 rspec
168
167
  bundle exec appraisal rails-7.0 rspec
169
- bundle exec appraisal rails-7.1 rspec
170
168
  ```
171
169
 
172
170
  ## Thanks
data/data_migrate.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  activerecord
20
20
  railties
21
21
  ].each do |rails_gem|
22
- s.add_dependency(rails_gem, '>= 6.1')
22
+ s.add_dependency(rails_gem, '>= 6.0')
23
23
  end
24
24
 
25
25
  s.add_development_dependency "appraisal"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
+ gem "rails", "~> 6.0.0"
5
6
  gem "sqlite3", "~> 1.4"
6
- gem "rails", "7.1.0"
7
7
 
8
8
  gemspec path: "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "http://rubygems.org"
4
4
 
5
- gem "sqlite3", "~> 1.4"
6
5
  gem "rails", "~> 6.1.0"
6
+ gem "sqlite3", "~> 1.4"
7
7
 
8
8
  gemspec path: "../"
@@ -5,20 +5,32 @@ require "data_migrate/config"
5
5
 
6
6
  module DataMigrate
7
7
  class DataMigrator < ActiveRecord::Migrator
8
+ def self.migrations_paths
9
+ [DataMigrate.config.data_migrations_path]
10
+ end
11
+
12
+ def self.assure_data_schema_table
13
+ DataMigrate::DataSchemaMigration.create_table
14
+ end
15
+
16
+ def initialize(direction, migrations, target_version = nil)
17
+ @direction = direction
18
+ @target_version = target_version
19
+ @migrated_versions = nil
20
+ @migrations = migrations
21
+
22
+ validate(@migrations)
23
+
24
+ DataMigrate::DataSchemaMigration.create_table
25
+ ActiveRecord::InternalMetadata.create_table
26
+ end
27
+
8
28
  def load_migrated
9
29
  @migrated_versions =
10
- DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i).sort
30
+ DataMigrate::DataSchemaMigration.normalized_versions.map(&:to_i).sort
11
31
  end
12
32
 
13
33
  class << self
14
- def migrations_paths
15
- [DataMigrate.config.data_migrations_path]
16
- end
17
-
18
- def create_data_schema_table
19
- DataMigrate::RailsHelper.data_schema_migration.create_table
20
- end
21
-
22
34
  def current_version
23
35
  DataMigrate::MigrationContext.new(migrations_paths).current_version
24
36
  end
@@ -67,10 +79,10 @@ module DataMigrate
67
79
  def record_version_state_after_migrating(version)
68
80
  if down?
69
81
  migrated.delete(version)
70
- DataMigrate::RailsHelper.data_schema_delete_version(version.to_s)
82
+ DataMigrate::DataSchemaMigration.where(version: version.to_s).delete_all
71
83
  else
72
84
  migrated << version
73
- DataMigrate::RailsHelper.data_schema_migration.create_version(version.to_s)
85
+ DataMigrate::DataSchemaMigration.create!(version: version.to_s)
74
86
  end
75
87
  end
76
88
  end
@@ -9,7 +9,7 @@ module DataMigrate
9
9
  # ActiveRecord::ConnectionAdapters::SchemaStatements
10
10
  # #assume_migrated_upto_version
11
11
  def define(info)
12
- DataMigrate::DataMigrator.create_data_schema_table
12
+ DataMigrate::DataMigrator.assure_data_schema_table
13
13
 
14
14
  return if info[:version].blank?
15
15
 
@@ -57,7 +57,7 @@ module DataMigrate
57
57
  end
58
58
 
59
59
  def table_name
60
- DataMigrate::RailsHelper.data_schema_migration.table_name
60
+ DataMigrate::DataSchemaMigration.table_name
61
61
  end
62
62
  end
63
63
  end
@@ -1,29 +1,12 @@
1
1
  module DataMigrate
2
- class DataSchemaMigration < ActiveRecord::SchemaMigration
3
- # In Rails 7.1+, ActiveRecord::SchemaMigration methods are instance methods
4
- # So we only load the appropriate methods depending on Rails version.
5
- if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_1
6
- def table_name
7
- ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix
8
- end
9
-
10
- def primary_key
11
- "version"
12
- end
13
- else
14
- class << self
15
- def table_name
16
- ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix
17
- end
18
-
19
- def primary_key
20
- "version"
21
- end
2
+ class DataSchemaMigration
3
+ class << self
4
+ delegate :table_name, :primary_key, :create_table, :normalized_versions, :create, :create!, :table_exists?, :exists?, :where, to: :instance
22
5
 
23
- def create_version(version)
24
- # Note that SchemaMigration.create_version in Rails 7.1 does not
25
- # raise an error if validations fail but we retain this behaviour for now.
26
- create!(version: version)
6
+ def instance
7
+ @instance ||= Class.new(::ActiveRecord::SchemaMigration) do
8
+ define_singleton_method(:table_name) { ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix }
9
+ define_singleton_method(:primary_key) { "version" }
27
10
  end
28
11
  end
29
12
  end
@@ -9,15 +9,10 @@ module DataMigrate
9
9
  extend ActiveRecord::Tasks::DatabaseTasks
10
10
 
11
11
  class << self
12
- def schema_file(_format = nil)
13
- File.join(db_dir, "data_schema.rb")
14
- end
15
-
16
12
  def schema_file_type(_format = nil)
17
13
  "data_schema.rb"
18
14
  end
19
15
 
20
- # This method is removed in Rails 7.0
21
16
  def dump_filename(spec_name, format = ActiveRecord::Base.schema_format)
22
17
  filename = if spec_name == "primary"
23
18
  schema_file_type(format)
@@ -67,26 +62,10 @@ module DataMigrate
67
62
  )
68
63
  end
69
64
  end
70
-
71
- def schema_dump_path(db_config, format = ActiveRecord.schema_format)
72
- return ENV["DATA_SCHEMA"] if ENV["DATA_SCHEMA"]
73
-
74
- # We only require a schema.rb file for the primary database
75
- return unless db_config.primary?
76
-
77
- File.join(File.dirname(ActiveRecord::Tasks::DatabaseTasks.schema_dump_path(db_config, format)), schema_file_type)
78
- end
79
-
80
- # Override this method from `ActiveRecord::Tasks::DatabaseTasks`
81
- # to ensure that the sha saved in ar_internal_metadata table
82
- # is from the original schema.rb file
83
- def schema_sha1(file)
84
- ActiveRecord::Tasks::DatabaseTasks.schema_dump_path(ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env, name: "primary"))
85
- end
86
65
  end
87
66
 
88
67
  def self.forward(step = 1)
89
- DataMigrate::DataMigrator.create_data_schema_table
68
+ DataMigrate::DataMigrator.assure_data_schema_table
90
69
  migrations = pending_migrations.reverse.pop(step).reverse
91
70
  migrations.each do | pending_migration |
92
71
  if pending_migration[:kind] == :data
@@ -101,10 +80,8 @@ module DataMigrate
101
80
 
102
81
  def self.pending_data_migrations
103
82
  data_migrations = DataMigrate::DataMigrator.migrations(data_migrations_path)
104
- data_migrator = DataMigrate::RailsHelper.data_migrator(:up, data_migrations)
105
- sort_migrations(
106
- data_migrator.pending_migrations.map { |m| { version: m.version, name: m.name, kind: :data } }
107
- )
83
+ sort_migrations(DataMigrate::DataMigrator.new(:up, data_migrations ).
84
+ pending_migrations.map {|m| { version: m.version, name: m.name, kind: :data }})
108
85
  end
109
86
 
110
87
  def self.pending_schema_migrations
@@ -112,8 +89,8 @@ module DataMigrate
112
89
  end
113
90
 
114
91
  def self.past_migrations(sort = nil)
115
- data_versions = DataMigrate::RailsHelper.data_schema_migration.table_exists? ? DataMigrate::RailsHelper.data_schema_migration.normalized_versions : []
116
- schema_versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
92
+ data_versions = DataMigrate::DataSchemaMigration.table_exists? ? DataMigrate::DataSchemaMigration.normalized_versions : []
93
+ schema_versions = ActiveRecord::SchemaMigration.normalized_versions
117
94
  migrations = data_versions.map { |v| { version: v.to_i, kind: :data } } + schema_versions.map { |v| { version: v.to_i, kind: :schema } }
118
95
 
119
96
  sort&.downcase == "asc" ? sort_migrations(migrations) : sort_migrations(migrations).reverse
@@ -0,0 +1,22 @@
1
+ module DataMigrate
2
+ class LegacyMigrator
3
+ def initialize(migrations_paths = "db/data")
4
+ @migrations_paths = migrations_paths || "db/data"
5
+ end
6
+
7
+ def migrate
8
+ dates =
9
+ DataMigrate::DataMigrator.migrations(@migrations_paths).collect(&:version)
10
+ legacy = ActiveRecord::SchemaMigration.where(version: dates)
11
+ legacy.each do |v|
12
+ begin
13
+ version = v.version
14
+ puts "Creating #{version} in data schema"
15
+ DataMigrate::DataSchemaMigration.create(version: version)
16
+ rescue ActiveRecord::RecordNotUnique
17
+ nil
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -11,8 +11,7 @@ module DataMigrate
11
11
  migrations
12
12
  end
13
13
 
14
- data_migrator = DataMigrate::RailsHelper.data_migrator(:up, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
15
- data_migrator.migrate
14
+ DataMigrator.new(:up, selected_migrations, target_version).migrate
16
15
  end
17
16
 
18
17
  def down(target_version = nil)
@@ -23,13 +22,11 @@ module DataMigrate
23
22
  migrations
24
23
  end
25
24
 
26
- data_migrator = DataMigrate::RailsHelper.data_migrator(:down, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
27
- data_migrator.migrate
25
+ DataMigrator.new(:down, selected_migrations, target_version).migrate
28
26
  end
29
27
 
30
28
  def run(direction, target_version)
31
- data_migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
32
- data_migrator.run
29
+ DataMigrator.new(direction, migrations, target_version).run
33
30
  end
34
31
 
35
32
  def current_version
@@ -43,12 +40,12 @@ module DataMigrate
43
40
  end
44
41
 
45
42
  def migrations_status
46
- db_list = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
43
+ db_list = DataSchemaMigration.normalized_versions
47
44
 
48
45
  file_list = migration_files.map do |file|
49
46
  version, name, scope = parse_migration_filename(file)
50
47
  raise ActiveRecord::IllegalMigrationNameError.new(file) unless version
51
- version = DataMigrate::RailsHelper.schema_migration.normalize_migration_number(version)
48
+ version = ActiveRecord::SchemaMigration.normalize_migration_number(version)
52
49
  status = db_list.delete(version) ? "up" : "down"
53
50
  [status, version, (name + scope).humanize]
54
51
  end.compact
@@ -63,15 +60,15 @@ module DataMigrate
63
60
  private
64
61
 
65
62
  def get_all_versions
66
- if DataMigrate::RailsHelper.data_schema_migration.table_exists?
67
- DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i)
63
+ if DataMigrate::DataSchemaMigration.table_exists?
64
+ DataSchemaMigration.normalized_versions.map(&:to_i)
68
65
  else
69
66
  []
70
67
  end
71
68
  end
72
69
 
73
70
  def move(direction, steps)
74
- migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations)
71
+ migrator = DataMigrator.new(direction, migrations)
75
72
 
76
73
  if current_version != 0 && !migrator.current_migration
77
74
  raise ActiveRecord::UnknownMigrationVersionError.new(current_version)
@@ -26,7 +26,7 @@ module DataMigrate
26
26
 
27
27
  def initialize(connection)
28
28
  @connection = connection
29
- all_versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
29
+ all_versions = DataSchemaMigration.normalized_versions
30
30
 
31
31
  @version = begin
32
32
  all_versions.max
@@ -7,14 +7,14 @@ module DataMigrate
7
7
  def self.pending_schema_migrations
8
8
  all_migrations = DataMigrate::MigrationContext.new(migrations_paths).migrations
9
9
  sort_migrations(
10
- ActiveRecord::Migrator.new(:up, all_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata).
10
+ ActiveRecord::Migrator.new(:up, all_migrations, ActiveRecord::Base.connection.schema_migration).
11
11
  pending_migrations.
12
12
  map {|m| { version: m.version, kind: :schema }}
13
13
  )
14
14
  end
15
15
 
16
16
  def self.run(direction, migration_paths, version)
17
- ActiveRecord::MigrationContext.new(migration_paths, DataMigrate::RailsHelper.schema_migration).run(direction, version)
17
+ ActiveRecord::MigrationContext.new(migration_paths, ActiveRecord::Base.connection.schema_migration).run(direction, version)
18
18
  end
19
19
 
20
20
  def self.sort_migrations(set1, set2 = nil)
@@ -24,10 +24,9 @@ module DataMigrate
24
24
 
25
25
  def self.migrations_paths
26
26
  spec_name = DataMigrate.config.spec_name
27
- # The positional argument true is to include pre-release versions, such as 7.1.0.alpha
28
- if spec_name && Gem::Dependency.new("railties", ">= 7.0").match?("railties", Gem.loaded_specs["railties"].version, true)
27
+ if spec_name && Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
29
28
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: spec_name).migrations_paths
30
- elsif spec_name && Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
29
+ elsif spec_name && Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
31
30
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: spec_name).migrations_paths
32
31
  else
33
32
  Rails.application.config.paths["db/migrate"].to_a
@@ -24,11 +24,11 @@ module DataMigrate
24
24
  private
25
25
 
26
26
  def table_name
27
- DataMigrate::RailsHelper.data_schema_migration.table_name
27
+ DataMigrate::DataSchemaMigration.table_name
28
28
  end
29
29
 
30
30
  def output(stream)
31
- unless DataMigrate::RailsHelper.data_schema_migration.table_exists?
31
+ unless DataMigrate::DataSchemaMigration.table_exists?
32
32
  stream.puts "Data migrations table does not exist yet."
33
33
  return
34
34
  end
@@ -44,9 +44,9 @@ module DataMigrate
44
44
  end
45
45
 
46
46
  def database_name
47
- if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
47
+ if Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
48
48
  ActiveRecord::Base.connection_db_config.configuration_hash[:database]
49
- elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
49
+ elsif Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
50
50
  ActiveRecord::Base.connection_config[:database]
51
51
  end
52
52
  end
@@ -9,9 +9,9 @@ module DataMigrate
9
9
  @migrations_paths ||= DataMigrate.config.data_migrations_path
10
10
  end
11
11
 
12
- def dump
12
+ def dump(db_config)
13
13
  if dump_schema_after_migration?
14
- filename = DataMigrate::DatabaseTasks.schema_file
14
+ filename = DataMigrate::DatabaseTasks.dump_filename(spec_name(db_config), ActiveRecord::Base.schema_format)
15
15
  ActiveRecord::Base.establish_connection(DataMigrate.config.db_configuration) if DataMigrate.config.db_configuration
16
16
  File.open(filename, "w:utf-8") do |file|
17
17
  DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, file)
@@ -22,7 +22,7 @@ module DataMigrate
22
22
  def migrate
23
23
  target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
24
24
 
25
- DataMigrate::DataMigrator.create_data_schema_table
25
+ DataMigrate::DataMigrator.assure_data_schema_table
26
26
  DataMigrate::MigrationContext.new(migrations_paths).migrate(target_version)
27
27
  end
28
28
 
@@ -44,15 +44,16 @@ module DataMigrate
44
44
  end
45
45
  end
46
46
 
47
- def status
48
- DataMigrate::StatusService.dump
47
+ def status(db_config)
48
+ puts "\ndatabase: #{spec_name(db_config)}\n\n"
49
+ DataMigrate::StatusService.dump(ActiveRecord::Base.connection)
49
50
  end
50
51
 
51
- def status_with_schema
52
+ def status_with_schema(db_config)
52
53
  db_list_data = ActiveRecord::Base.connection.select_values(
53
- "SELECT version FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}"
54
+ "SELECT version FROM #{DataMigrate::DataSchemaMigration.table_name}"
54
55
  )
55
- db_list_schema = DataMigrate::RailsHelper.schema_migration_versions
56
+ db_list_schema = ActiveRecord::SchemaMigration.all.pluck(:version)
56
57
  file_list = []
57
58
 
58
59
  Dir.foreach(File.join(Rails.root, migrations_paths)) do |file|
@@ -76,7 +77,7 @@ module DataMigrate
76
77
  file_list.sort!{|a,b| "#{a[1]}_#{a[3] == 'data' ? 1 : 0}" <=> "#{b[1]}_#{b[3] == 'data' ? 1 : 0}" }
77
78
 
78
79
  # output
79
- puts "\ndatabase: #{database_name}\n\n"
80
+ puts "\ndatabase: #{spec_name(db_config)}\n\n"
80
81
  puts "#{"Status".center(8)} #{"Type".center(8)} #{"Migration ID".ljust(14)} Migration Name"
81
82
  puts "-" * 60
82
83
  file_list.each do |file|
@@ -93,11 +94,11 @@ module DataMigrate
93
94
 
94
95
  private
95
96
 
96
- def database_name
97
- if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
98
- ActiveRecord::Base.connection_db_config.database
99
- elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
100
- ActiveRecord::Base.connection_config[:database]
97
+ def spec_name(db_config)
98
+ if Gem::Dependency.new("rails", "~> 7.0").match?("rails", Gem.loaded_specs["rails"].version)
99
+ db_config.name
100
+ elsif Gem::Dependency.new("rails", "~> 6.0").match?("rails", Gem.loaded_specs["rails"].version)
101
+ db_config.spec_name
101
102
  end
102
103
  end
103
104
  end
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "9.2.0".freeze
2
+ VERSION = "10.0.0.rc1".freeze
3
3
  end