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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +2 -1
- data/.gitignore +0 -1
- data/Appraisals +5 -5
- data/Changelog.md +7 -0
- data/Gemfile +0 -1
- data/Gemfile.lock +184 -0
- data/README.md +3 -3
- data/data_migrate.gemspec +2 -2
- data/gemfiles/rails_6.1.gemfile +0 -1
- data/gemfiles/rails_6.1.gemfile.lock +229 -0
- data/gemfiles/rails_7.0.gemfile +1 -2
- data/gemfiles/rails_7.0.gemfile.lock +230 -0
- data/gemfiles/{rails_6.0.gemfile → rails_7.1.gemfile} +1 -2
- data/gemfiles/rails_7.1.gemfile.lock +263 -0
- data/lib/data_migrate/data_migrator.rb +11 -23
- data/lib/data_migrate/data_schema.rb +1 -1
- data/lib/data_migrate/data_schema_migration.rb +24 -7
- data/lib/data_migrate/database_configurations_wrapper.rb +11 -0
- data/lib/data_migrate/database_tasks.rb +120 -63
- data/lib/data_migrate/migration_context.rb +11 -8
- data/lib/data_migrate/rails_helper.rb +79 -0
- data/lib/data_migrate/schema_dumper.rb +1 -1
- data/lib/data_migrate/schema_migration.rb +5 -4
- data/lib/data_migrate/status_service.rb +3 -3
- data/lib/data_migrate/tasks/data_migrate_tasks.rb +3 -3
- data/lib/data_migrate/test.rb +14 -0
- data/lib/data_migrate/version.rb +1 -1
- data/lib/data_migrate.rb +2 -1
- data/spec/data_migrate/data_migrator_spec.rb +16 -13
- data/spec/data_migrate/data_schema_migration_spec.rb +25 -8
- data/spec/data_migrate/data_spec.rb +1 -1
- data/spec/data_migrate/database_tasks_spec.rb +34 -18
- data/spec/data_migrate/migration_context_spec.rb +15 -8
- data/spec/data_migrate/schema_dumper_spec.rb +6 -3
- data/spec/data_migrate/schema_migration_spec.rb +13 -6
- data/spec/data_migrate/status_service_spec.rb +6 -3
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +8 -8
- data/spec/db/data/20091231235959_some_name.rb +1 -1
- data/spec/db/data/20171231235959_super_update.rb +1 -1
- data/spec/db/migrate/20131111111111_late_migration.rb +1 -1
- data/spec/db/migrate/20202020202011_db_migration.rb +1 -1
- data/tasks/databases.rake +21 -38
- metadata +19 -15
- data/Gemfile.rails6.1 +0 -11
- data/lib/data_migrate/legacy_migrator.rb +0 -22
- 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(
|
31
|
-
|
32
|
-
|
33
|
-
|
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
|
-
|
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::
|
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::
|
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 =
|
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::
|
11
|
-
DataMigrate::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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::
|
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
|
-
|
13
|
-
DataMigrate::
|
14
|
-
|
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::
|
14
|
-
DataMigrate::
|
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 =
|
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 =
|
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.
|
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
|
-
|
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
|
-
|
37
|
-
DataMigrate::
|
38
|
-
|
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(:
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
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::
|
16
|
-
DataMigrate::
|
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
|
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
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
51
|
-
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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:
|
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:
|
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.
|
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.
|
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,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
|