data_migrate 9.1.1 → 9.3.0

Sign up to get free protection for your applications and to get access to all the features.
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