data_migrate 9.1.1 → 9.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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +2 -1
  3. data/.gitignore +0 -1
  4. data/Appraisals +5 -5
  5. data/Changelog.md +7 -0
  6. data/Gemfile +0 -1
  7. data/Gemfile.lock +184 -0
  8. data/README.md +3 -3
  9. data/data_migrate.gemspec +2 -2
  10. data/gemfiles/rails_6.1.gemfile +0 -1
  11. data/gemfiles/rails_6.1.gemfile.lock +229 -0
  12. data/gemfiles/rails_7.0.gemfile +1 -2
  13. data/gemfiles/rails_7.0.gemfile.lock +230 -0
  14. data/gemfiles/{rails_6.0.gemfile → rails_7.1.gemfile} +1 -2
  15. data/gemfiles/rails_7.1.gemfile.lock +263 -0
  16. data/lib/data_migrate/data_migrator.rb +11 -23
  17. data/lib/data_migrate/data_schema.rb +1 -1
  18. data/lib/data_migrate/data_schema_migration.rb +24 -7
  19. data/lib/data_migrate/database_configurations_wrapper.rb +11 -0
  20. data/lib/data_migrate/database_tasks.rb +120 -63
  21. data/lib/data_migrate/migration_context.rb +11 -8
  22. data/lib/data_migrate/rails_helper.rb +79 -0
  23. data/lib/data_migrate/schema_dumper.rb +1 -1
  24. data/lib/data_migrate/schema_migration.rb +5 -4
  25. data/lib/data_migrate/status_service.rb +3 -3
  26. data/lib/data_migrate/tasks/data_migrate_tasks.rb +3 -3
  27. data/lib/data_migrate/test.rb +14 -0
  28. data/lib/data_migrate/version.rb +1 -1
  29. data/lib/data_migrate.rb +2 -1
  30. data/spec/data_migrate/data_migrator_spec.rb +16 -13
  31. data/spec/data_migrate/data_schema_migration_spec.rb +25 -8
  32. data/spec/data_migrate/data_spec.rb +1 -1
  33. data/spec/data_migrate/database_tasks_spec.rb +34 -18
  34. data/spec/data_migrate/migration_context_spec.rb +15 -8
  35. data/spec/data_migrate/schema_dumper_spec.rb +6 -3
  36. data/spec/data_migrate/schema_migration_spec.rb +13 -6
  37. data/spec/data_migrate/status_service_spec.rb +6 -3
  38. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +8 -8
  39. data/spec/db/data/20091231235959_some_name.rb +1 -1
  40. data/spec/db/data/20171231235959_super_update.rb +1 -1
  41. data/spec/db/migrate/20131111111111_late_migration.rb +1 -1
  42. data/spec/db/migrate/20202020202011_db_migration.rb +1 -1
  43. data/tasks/databases.rake +21 -38
  44. metadata +19 -15
  45. data/Gemfile.rails6.1 +0 -11
  46. data/lib/data_migrate/legacy_migrator.rb +0 -22
  47. data/spec/data_migrate/legacy_migrator_spec.rb +0 -38
@@ -8,12 +8,6 @@ describe DataMigrate::DatabaseTasks do
8
8
  let(:data_migrations_path) {
9
9
  DataMigrate.config.data_migrations_path
10
10
  }
11
- let(:db_config) do
12
- {
13
- adapter: "sqlite3",
14
- database: "spec/db/test.db"
15
- }
16
- end
17
11
 
18
12
  before do
19
13
  # In a normal Rails installation, db_dir would defer to
@@ -27,14 +21,10 @@ describe DataMigrate::DatabaseTasks do
27
21
  allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
28
22
  data_migrations_path
29
23
  }
30
- ActiveRecord::Base.establish_connection(db_config)
31
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
32
- hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', db_config)
33
- config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
34
- allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
35
- else
36
- ActiveRecord::Base.configurations[:test] = db_config
37
- end
24
+ ActiveRecord::Base.establish_connection({ adapter: "sqlite3", database: "spec/db/test.db" })
25
+ hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', { adapter: "sqlite3", database: "spec/db/test.db" })
26
+ config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
27
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
38
28
  end
39
29
 
40
30
  context "migrations" do
@@ -44,7 +34,7 @@ describe DataMigrate::DatabaseTasks do
44
34
  end
45
35
 
46
36
  before do
47
- ActiveRecord::SchemaMigration.create_table
37
+ DataMigrate::RailsHelper.schema_migration.create_table
48
38
 
49
39
  allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
50
40
  migration_path
@@ -71,19 +61,45 @@ describe DataMigrate::DatabaseTasks do
71
61
  describe :forward do
72
62
  it "run forward default amount of times" do
73
63
  subject.forward
74
- versions = DataMigrate::DataSchemaMigration.normalized_versions
64
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
75
65
  expect(versions.count).to eq(1)
76
66
  end
77
67
 
78
68
  it "run forward defined number of times" do
79
69
  subject.forward(2)
80
- versions = DataMigrate::DataSchemaMigration.normalized_versions
70
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
81
71
  expect(versions.count).to eq(1)
82
72
  expect(versions.first).to eq "20091231235959"
83
- versions = ActiveRecord::SchemaMigration.normalized_versions
73
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
84
74
  expect(versions.count).to eq(1)
85
75
  expect(versions.first).to eq "20131111111111"
86
76
  end
87
77
  end
78
+
79
+ if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_0
80
+ describe :schema_dump_path do
81
+ before do
82
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(ActiveRecord::DatabaseConfigurations.new([db_config]))
83
+ end
84
+
85
+ context "for primary database" do
86
+ let(:db_config) { ActiveRecord::DatabaseConfigurations::HashConfig.new("development", "primary", {} ) }
87
+
88
+ context "for :ruby db format" do
89
+ it 'returns the data schema path' do
90
+ allow(ActiveRecord).to receive(:schema_format).and_return(:ruby)
91
+ expect(subject.schema_dump_path(db_config)).to eq("db/data_schema.rb")
92
+ end
93
+ end
94
+
95
+ context "for :sql db format" do
96
+ it 'returns the data schema path' do
97
+ allow(ActiveRecord).to receive(:schema_format).and_return(:sql)
98
+ expect(subject.schema_dump_path(db_config, :sql)).to eq("db/data_schema.rb")
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
88
104
  end
89
105
  end
@@ -5,10 +5,17 @@ require "spec_helper"
5
5
  describe DataMigrate::DataMigrator do
6
6
  let(:context) { DataMigrate::MigrationContext.new("spec/db/data") }
7
7
  let(:schema_context) { ActiveRecord::MigrationContext.new("spec/db/migrate", ActiveRecord::Base.connection.schema_migration) }
8
+ let(:db_config) do
9
+ {
10
+ adapter: "sqlite3",
11
+ database: "spec/db/test.db"
12
+ }
13
+ end
8
14
 
9
15
  before do
10
- ActiveRecord::SchemaMigration.create_table
11
- DataMigrate::DataSchemaMigration.create_table
16
+ ActiveRecord::Base.establish_connection(db_config)
17
+ DataMigrate::RailsHelper.schema_migration.create_table
18
+ DataMigrate::RailsHelper.data_schema_migration.create_table
12
19
  end
13
20
 
14
21
  after do
@@ -20,7 +27,7 @@ describe DataMigrate::DataMigrator do
20
27
  it "migrates existing file" do
21
28
  context.migrate(nil)
22
29
  context.migrations_status
23
- versions = DataMigrate::DataSchemaMigration.normalized_versions
30
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
24
31
  expect(versions.count).to eq(2)
25
32
  expect(versions).to include("20091231235959")
26
33
  expect(versions).to include("20171231235959")
@@ -29,7 +36,7 @@ describe DataMigrate::DataMigrator do
29
36
  it "undo migration" do
30
37
  context.migrate(nil)
31
38
  context.run(:down, 20171231235959)
32
- versions = DataMigrate::DataSchemaMigration.normalized_versions
39
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
33
40
  expect(versions.count).to eq(1)
34
41
  expect(versions).to include("20091231235959")
35
42
  end
@@ -46,7 +53,7 @@ describe DataMigrate::DataMigrator do
46
53
 
47
54
  it "runs a specific migration" do
48
55
  context.run(:up, 20171231235959)
49
- versions = DataMigrate::DataSchemaMigration.normalized_versions
56
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
50
57
  expect(versions.count).to eq(1)
51
58
  expect(versions).to include("20171231235959")
52
59
  end
@@ -74,7 +81,7 @@ describe DataMigrate::DataMigrator do
74
81
  expect {
75
82
  context.rollback
76
83
  }.to output(/Undoing SuperUpdate/).to_stdout
77
- versions = DataMigrate::DataSchemaMigration.normalized_versions
84
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
78
85
  expect(versions.count).to eq(1)
79
86
  expect(versions).to include("20091231235959")
80
87
  end
@@ -85,7 +92,7 @@ describe DataMigrate::DataMigrator do
85
92
  expect {
86
93
  context.rollback(2)
87
94
  }.to output(/Undoing SomeName/).to_stdout
88
- versions = DataMigrate::DataSchemaMigration.normalized_versions
95
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
89
96
  expect(versions.count).to eq(0)
90
97
  end
91
98
 
@@ -94,7 +101,7 @@ describe DataMigrate::DataMigrator do
94
101
  expect {
95
102
  context.rollback(2)
96
103
  }.to output(/Undoing SomeName/).to_stdout
97
- versions = DataMigrate::DataSchemaMigration.normalized_versions
104
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
98
105
  expect(versions.count).to eq(0)
99
106
  end
100
107
  end
@@ -9,9 +9,12 @@ describe DataMigrate::SchemaDumper do
9
9
  end
10
10
 
11
11
  before do
12
- ActiveRecord::SchemaMigration.create_table
13
- DataMigrate::DataSchemaMigration.create_table
14
- DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
12
+ DataMigrate::RailsHelper.schema_migration.create_table
13
+ DataMigrate::RailsHelper.data_schema_migration.create_table
14
+
15
+ fixture_file_timestamps.map do |t|
16
+ DataMigrate::RailsHelper.data_schema_migration.create_version(t)
17
+ end
15
18
  end
16
19
 
17
20
  after do
@@ -8,10 +8,17 @@ describe DataMigrate::SchemaMigration do
8
8
  let(:fixture_file_timestamps) do
9
9
  %w[20091231235959 20101231235959 20111231235959]
10
10
  end
11
+ let(:db_config) do
12
+ {
13
+ adapter: "sqlite3",
14
+ database: "spec/db/test.db"
15
+ }
16
+ end
11
17
 
12
18
  before do
13
- ActiveRecord::SchemaMigration.create_table
14
- DataMigrate::DataSchemaMigration.create_table
19
+ ActiveRecord::Base.establish_connection(db_config)
20
+ DataMigrate::RailsHelper.schema_migration.create_table
21
+ DataMigrate::RailsHelper.data_schema_migration.create_table
15
22
  end
16
23
 
17
24
  after do
@@ -38,7 +45,7 @@ describe DataMigrate::SchemaMigration do
38
45
  expect {
39
46
  subject.run(:up, migration_path, 20202020202011)
40
47
  }.to output(/20202020202011 DbMigration: migrating/).to_stdout
41
- versions = ActiveRecord::SchemaMigration.normalized_versions
48
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
42
49
  expect(versions.first).to eq("20202020202011")
43
50
  end
44
51
 
@@ -49,7 +56,7 @@ describe DataMigrate::SchemaMigration do
49
56
  subject.run(:down, migration_path, 20202020202011)
50
57
  }.to output(/Undoing DbMigration/).to_stdout
51
58
 
52
- versions = ActiveRecord::SchemaMigration.normalized_versions
59
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
53
60
 
54
61
  expect(versions.count).to eq(0)
55
62
  end
@@ -61,9 +68,9 @@ describe DataMigrate::SchemaMigration do
61
68
  let(:paths) { ['spec/db/migrate', 'spec/db/migrate/other'] }
62
69
  let(:specification_name) { "primary" }
63
70
  let(:config_options) do
64
- if Gem::Dependency.new("railties", "~> 6.0").match?("railties", Gem.loaded_specs["railties"].version)
71
+ if Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
65
72
  { env_name: Rails.env, spec_name: specification_name }
66
- elsif Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
73
+ else
67
74
  { env_name: Rails.env, name: specification_name }
68
75
  end
69
76
  end
@@ -33,9 +33,12 @@ describe DataMigrate::StatusService do
33
33
  end
34
34
 
35
35
  before do
36
- ActiveRecord::SchemaMigration.create_table
37
- DataMigrate::DataSchemaMigration.create_table
38
- DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
36
+ DataMigrate::RailsHelper.schema_migration.create_table
37
+ DataMigrate::RailsHelper.data_schema_migration.create_table
38
+
39
+ fixture_file_timestamps.map do |t|
40
+ DataMigrate::RailsHelper.data_schema_migration.create_version(t)
41
+ end
39
42
 
40
43
  subject.dump(connection_db_config, stream)
41
44
  stream.rewind
@@ -3,17 +3,17 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe DataMigrate::Tasks::DataMigrateTasks do
6
- let(:connection_db_config) do
7
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
8
- ActiveRecord::Base.connection_db_config
9
- else
10
- ActiveRecord::Base.configurations.configs_for.first
11
- end
6
+ let(:db_config) do
7
+ {
8
+ adapter: "sqlite3",
9
+ database: "spec/db/test.db"
10
+ }
12
11
  end
13
12
 
14
13
  before do
15
- ActiveRecord::SchemaMigration.create_table
16
- DataMigrate::DataSchemaMigration.create_table
14
+ ActiveRecord::Base.establish_connection(db_config)
15
+ DataMigrate::RailsHelper.schema_migration.create_table
16
+ DataMigrate::RailsHelper.data_schema_migration.create_table
17
17
  end
18
18
 
19
19
  after do
@@ -1,4 +1,4 @@
1
- class SomeName < ActiveRecord::Migration[6.0]
1
+ class SomeName < ActiveRecord::Migration[6.1]
2
2
  def up
3
3
  puts "Doing data migration"
4
4
  end
@@ -1,4 +1,4 @@
1
- class SuperUpdate < ActiveRecord::Migration[6.0]
1
+ class SuperUpdate < ActiveRecord::Migration[6.1]
2
2
  def up
3
3
  puts "Doing SuperUpdate"
4
4
  end
@@ -1,4 +1,4 @@
1
- class LateMigration < ActiveRecord::Migration[6.0]
1
+ class LateMigration < ActiveRecord::Migration[6.1]
2
2
  def up
3
3
  puts "Doing schema LateMigration"
4
4
  end
@@ -1,4 +1,4 @@
1
- class DbMigration < ActiveRecord::Migration[6.0]
1
+ class DbMigration < ActiveRecord::Migration[6.1]
2
2
  def up
3
3
  puts "Doing schema migration"
4
4
  end
data/tasks/databases.rake CHANGED
@@ -7,48 +7,31 @@ namespace :db do
7
7
  desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
8
8
  task :with_data => :environment do
9
9
  DataMigrate::DataMigrator.create_data_schema_table
10
-
11
10
  ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
12
- target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
13
- migrations = []
14
11
 
15
- if target_version.nil?
16
- migrations = DataMigrate::DatabaseTasks.pending_migrations.map{ |m| m.merge(:direction =>:up) }
17
- else
18
- current_schema_version = ActiveRecord::Migrator.current_version
19
- schema_migrations = if target_version > current_schema_version
20
- DataMigrate::DatabaseTasks.pending_schema_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
21
- elsif target_version < current_schema_version
22
- DataMigrate::DatabaseTasks.past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
23
- else # ==
24
- []
25
- end
26
-
27
- current_data_version = DataMigrate::DataMigrator.current_version
28
- data_migrations = if target_version > current_data_version
29
- DataMigrate::DatabaseTasks.pending_data_migrations.keep_if{ |m| m[:version] <= target_version }.map{ |m| m.merge(:direction =>:up) }
30
- elsif target_version < current_data_version
31
- DataMigrate::DatabaseTasks.past_migrations.keep_if{ |m| m[:version] > target_version }.map{ |m| m.merge(:direction =>:down) }
32
- else # ==
33
- []
34
- end
35
- migrations = if schema_migrations.empty?
36
- data_migrations
37
- elsif data_migrations.empty?
38
- schema_migrations
39
- elsif target_version > current_data_version && target_version > current_schema_version
40
- DataMigrate::DatabaseTasks.sort_migrations data_migrations, schema_migrations
41
- elsif target_version < current_data_version && target_version < current_schema_version
42
- DataMigrate::DatabaseTasks.sort_migrations(data_migrations, schema_migrations).reverse
43
- elsif target_version > current_data_version && target_version < current_schema_version
44
- schema_migrations + data_migrations
45
- elsif target_version < current_data_version && target_version > current_schema_version
46
- schema_migrations + data_migrations
47
- end
12
+ db_configs = ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env)
13
+
14
+ schema_mapped_versions = ActiveRecord::Tasks::DatabaseTasks.db_configs_with_versions(db_configs)
15
+ data_mapped_versions = DataMigrate::DatabaseTasks.db_configs_with_versions
16
+
17
+ mapped_versions = schema_mapped_versions.merge(data_mapped_versions) do |_key, schema_db_configs, data_db_configs|
18
+ schema_db_configs + data_db_configs
48
19
  end
49
20
 
50
- migrations.each do |migration|
51
- DataMigrate::DatabaseTasks.run_migration(migration, migration[:direction])
21
+ mapped_versions.sort.each do |version, db_configs|
22
+ db_configs.each do |db_config|
23
+ if is_data_migration = db_config.is_a?(DataMigrate::DatabaseConfigurationWrapper)
24
+ db_config = db_config.db_config
25
+ end
26
+
27
+ DataMigrate::DatabaseTasks.with_temporary_connection(db_config) do
28
+ if is_data_migration
29
+ DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version)
30
+ else
31
+ ActiveRecord::Tasks::DatabaseTasks.migrate(version)
32
+ end
33
+ end
34
+ end
52
35
  end
53
36
 
54
37
  Rake::Task["db:_dump"].invoke
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_migrate
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.1.1
4
+ version: 9.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew J Vargo
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-08-02 00:00:00.000000000 Z
13
+ date: 2024-03-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -18,28 +18,28 @@ dependencies:
18
18
  requirements:
19
19
  - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: '6.0'
21
+ version: '6.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: '6.0'
28
+ version: '6.1'
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: railties
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '6.0'
35
+ version: '6.1'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '6.0'
42
+ version: '6.1'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: appraisal
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -128,16 +128,16 @@ dependencies:
128
128
  name: sqlite3
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
- - - "~>"
131
+ - - ">="
132
132
  - !ruby/object:Gem::Version
133
- version: 1.3.6
133
+ version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
136
  version_requirements: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - "~>"
138
+ - - ">="
139
139
  - !ruby/object:Gem::Version
140
- version: 1.3.6
140
+ version: '0'
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: timecop
143
143
  requirement: !ruby/object:Gem::Requirement
@@ -201,14 +201,17 @@ files:
201
201
  - Appraisals
202
202
  - Changelog.md
203
203
  - Gemfile
204
- - Gemfile.rails6.1
204
+ - Gemfile.lock
205
205
  - LICENSE
206
206
  - README.md
207
207
  - Rakefile
208
208
  - data_migrate.gemspec
209
- - gemfiles/rails_6.0.gemfile
210
209
  - gemfiles/rails_6.1.gemfile
210
+ - gemfiles/rails_6.1.gemfile.lock
211
211
  - gemfiles/rails_7.0.gemfile
212
+ - gemfiles/rails_7.0.gemfile.lock
213
+ - gemfiles/rails_7.1.gemfile
214
+ - gemfiles/rails_7.1.gemfile.lock
212
215
  - lib/capistrano/data_migrate.rb
213
216
  - lib/capistrano/data_migrate/migrate.rb
214
217
  - lib/data_migrate.rb
@@ -216,14 +219,16 @@ files:
216
219
  - lib/data_migrate/data_migrator.rb
217
220
  - lib/data_migrate/data_schema.rb
218
221
  - lib/data_migrate/data_schema_migration.rb
222
+ - lib/data_migrate/database_configurations_wrapper.rb
219
223
  - lib/data_migrate/database_tasks.rb
220
- - lib/data_migrate/legacy_migrator.rb
221
224
  - lib/data_migrate/migration_context.rb
225
+ - lib/data_migrate/rails_helper.rb
222
226
  - lib/data_migrate/railtie.rb
223
227
  - lib/data_migrate/schema_dumper.rb
224
228
  - lib/data_migrate/schema_migration.rb
225
229
  - lib/data_migrate/status_service.rb
226
230
  - lib/data_migrate/tasks/data_migrate_tasks.rb
231
+ - lib/data_migrate/test.rb
227
232
  - lib/data_migrate/version.rb
228
233
  - lib/generators/data_migrate.rb
229
234
  - lib/generators/data_migration/data_migration_generator.rb
@@ -235,7 +240,6 @@ files:
235
240
  - spec/data_migrate/data_schema_migration_spec.rb
236
241
  - spec/data_migrate/data_spec.rb
237
242
  - spec/data_migrate/database_tasks_spec.rb
238
- - spec/data_migrate/legacy_migrator_spec.rb
239
243
  - spec/data_migrate/migration.rb
240
244
  - spec/data_migrate/migration_context_spec.rb
241
245
  - spec/data_migrate/schema_dumper_spec.rb
@@ -274,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
274
278
  - !ruby/object:Gem::Version
275
279
  version: '0'
276
280
  requirements: []
277
- rubygems_version: 3.4.10
281
+ rubygems_version: 3.4.19
278
282
  signing_key:
279
283
  specification_version: 4
280
284
  summary: Rake tasks to migrate data alongside schema changes.
data/Gemfile.rails6.1 DELETED
@@ -1,11 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- # Specify your gem's dependencies in data_migrate.gemspec
4
- %w[
5
- activerecord
6
- railties
7
- ].each do |rails_gem|
8
- gem rails_gem, '~> 6.1.0'
9
- end
10
- gem 'sqlite3', "~> 1.4"
11
- gemspec
@@ -1,22 +0,0 @@
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
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::LegacyMigrator do
6
- let(:context) {
7
- DataMigrate::MigrationContext.new("spec/db/data")
8
- }
9
-
10
- before do
11
- ActiveRecord::SchemaMigration.create_table
12
- DataMigrate::DataSchemaMigration.create_table
13
- end
14
-
15
- after do
16
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
17
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
18
- end
19
-
20
- it "migrate legacy migrations to be in correct table" do
21
- # simulate creation of legacy data migration when
22
- # it was recorded in schema table
23
- ActiveRecord::SchemaMigration.create(version: "20091231235959")
24
-
25
- # create one migration in correct place
26
- DataMigrate::DataSchemaMigration.create(version: "20171231235959")
27
-
28
- migrated = DataMigrate::DataMigrator.new(:up, []).load_migrated
29
- expect(migrated.count).to eq 1
30
-
31
- DataMigrate::LegacyMigrator.new("spec/db/data").migrate
32
-
33
- # after migacy migrator has been run, we should have records
34
- # of both migrations
35
- migrated = DataMigrate::DataMigrator .new(:up, []).load_migrated
36
- expect(migrated.count).to eq 2
37
- end
38
- end