data_migrate 9.1.0 → 11.2.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/Changelog.md +40 -0
- data/README.md +22 -15
- data/lib/data_migrate/data_migrator.rb +15 -23
- data/lib/data_migrate/data_schema.rb +7 -7
- 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 +224 -61
- data/lib/data_migrate/migration_context.rb +11 -8
- data/lib/data_migrate/rails_helper.rb +91 -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 +11 -9
- data/lib/data_migrate/version.rb +1 -1
- data/lib/data_migrate.rb +2 -1
- data/lib/generators/data_migration/data_migration_generator.rb +2 -1
- data/tasks/databases.rake +9 -46
- metadata +13 -54
- data/.github/workflows/build.yml +0 -34
- data/.github/workflows/gempush.yml +0 -28
- data/.gitignore +0 -13
- data/.hound.yml +0 -4
- data/.overcommit.yml +0 -21
- data/.rbenv-gemsets +0 -2
- data/.rspec +0 -3
- data/.rubocop.yml +0 -2
- data/.ruby-style.yml +0 -1061
- data/Appraisals +0 -11
- data/Gemfile +0 -4
- data/Gemfile.rails6.1 +0 -11
- data/Rakefile +0 -2
- data/data_migrate.gemspec +0 -41
- data/gemfiles/rails_6.0.gemfile +0 -8
- data/gemfiles/rails_6.1.gemfile +0 -8
- data/gemfiles/rails_7.0.gemfile +0 -8
- data/lib/data_migrate/legacy_migrator.rb +0 -22
- data/screenshot.png +0 -0
- data/spec/data_migrate/config_spec.rb +0 -69
- data/spec/data_migrate/data_migrator_spec.rb +0 -80
- data/spec/data_migrate/data_schema_migration_spec.rb +0 -16
- data/spec/data_migrate/data_spec.rb +0 -74
- data/spec/data_migrate/database_tasks_spec.rb +0 -90
- data/spec/data_migrate/legacy_migrator_spec.rb +0 -38
- data/spec/data_migrate/migration.rb +0 -17
- data/spec/data_migrate/migration_context_spec.rb +0 -101
- data/spec/data_migrate/schema_dumper_spec.rb +0 -33
- data/spec/data_migrate/schema_migration_spec.rb +0 -97
- data/spec/data_migrate/status_service_spec.rb +0 -73
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +0 -129
- data/spec/db/data/20091231235959_some_name.rb +0 -9
- data/spec/db/data/20171231235959_super_update.rb +0 -9
- data/spec/db/data/20181128000207_excluded_file.rb.other_ext +0 -1
- data/spec/db/data/partial_schema/data_schema.rb +0 -1
- data/spec/db/data/partial_schema/test_data_schema.rb +0 -1
- data/spec/db/data/schema/data_schema.rb +0 -1
- data/spec/db/data/schema/test_data_schema.rb +0 -1
- data/spec/db/migrate/20131111111111_late_migration.rb +0 -9
- data/spec/db/migrate/20202020202011_db_migration.rb +0 -9
- data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -101
- data/spec/spec_helper.rb +0 -28
- data/tasks/.gitkeep +0 -0
|
@@ -11,7 +11,8 @@ module DataMigrate
|
|
|
11
11
|
migrations
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
data_migrator = DataMigrate::RailsHelper.data_migrator(:up, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
|
|
15
|
+
data_migrator.migrate
|
|
15
16
|
end
|
|
16
17
|
|
|
17
18
|
def down(target_version = nil)
|
|
@@ -22,11 +23,13 @@ module DataMigrate
|
|
|
22
23
|
migrations
|
|
23
24
|
end
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
data_migrator = DataMigrate::RailsHelper.data_migrator(:down, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
|
|
27
|
+
data_migrator.migrate
|
|
26
28
|
end
|
|
27
29
|
|
|
28
30
|
def run(direction, target_version)
|
|
29
|
-
|
|
31
|
+
data_migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
|
|
32
|
+
data_migrator.run
|
|
30
33
|
end
|
|
31
34
|
|
|
32
35
|
def current_version
|
|
@@ -40,12 +43,12 @@ module DataMigrate
|
|
|
40
43
|
end
|
|
41
44
|
|
|
42
45
|
def migrations_status
|
|
43
|
-
db_list =
|
|
46
|
+
db_list = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
|
|
44
47
|
|
|
45
48
|
file_list = migration_files.map do |file|
|
|
46
49
|
version, name, scope = parse_migration_filename(file)
|
|
47
50
|
raise ActiveRecord::IllegalMigrationNameError.new(file) unless version
|
|
48
|
-
version =
|
|
51
|
+
version = DataMigrate::RailsHelper.schema_migration.normalize_migration_number(version)
|
|
49
52
|
status = db_list.delete(version) ? "up" : "down"
|
|
50
53
|
[status, version, (name + scope).humanize]
|
|
51
54
|
end.compact
|
|
@@ -60,15 +63,15 @@ module DataMigrate
|
|
|
60
63
|
private
|
|
61
64
|
|
|
62
65
|
def get_all_versions
|
|
63
|
-
if DataMigrate::
|
|
64
|
-
|
|
66
|
+
if DataMigrate::RailsHelper.data_schema_migration.table_exists?
|
|
67
|
+
DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i)
|
|
65
68
|
else
|
|
66
69
|
[]
|
|
67
70
|
end
|
|
68
71
|
end
|
|
69
72
|
|
|
70
73
|
def move(direction, steps)
|
|
71
|
-
migrator =
|
|
74
|
+
migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations)
|
|
72
75
|
|
|
73
76
|
if current_version != 0 && !migrator.current_migration
|
|
74
77
|
raise ActiveRecord::UnknownMigrationVersionError.new(current_version)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
module DataMigrate
|
|
2
|
+
class RailsHelper
|
|
3
|
+
class << self
|
|
4
|
+
def rails_version_equal_to_or_higher_than_7_2
|
|
5
|
+
return @equal_to_or_higher_than_7_2 if defined?(@equal_to_or_higher_than_7_2)
|
|
6
|
+
|
|
7
|
+
@equal_to_or_higher_than_7_2 = Gem::Dependency.new("railties", ">= 7.2.0.alpha").match?("railties", Gem.loaded_specs["railties"].version, true)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def rails_version_equal_to_or_higher_than_7_1
|
|
11
|
+
return @equal_to_or_higher_than_7_1 if defined?(@equal_to_or_higher_than_7_1)
|
|
12
|
+
|
|
13
|
+
@equal_to_or_higher_than_7_1 = Gem::Dependency.new("railties", ">= 7.1.0.alpha").match?("railties", Gem.loaded_specs["railties"].version, true)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def rails_version_equal_to_or_higher_than_7_0
|
|
17
|
+
return @rails_version_equal_to_or_higher_than_7_0 if defined?(@rails_version_equal_to_or_higher_than_7_0)
|
|
18
|
+
|
|
19
|
+
@rails_version_equal_to_or_higher_than_7_0 = Gem::Dependency.new("railties", ">= 7.0").match?("railties", Gem.loaded_specs["railties"].version, true)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def internal_metadata
|
|
23
|
+
if rails_version_equal_to_or_higher_than_7_2
|
|
24
|
+
ActiveRecord::Base.connection_pool.internal_metadata
|
|
25
|
+
elsif rails_version_equal_to_or_higher_than_7_1
|
|
26
|
+
ActiveRecord::Base.connection.internal_metadata
|
|
27
|
+
else
|
|
28
|
+
ActiveRecord::InternalMetadata
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def schema_migration
|
|
33
|
+
if rails_version_equal_to_or_higher_than_7_2
|
|
34
|
+
ActiveRecord::Base.connection_pool.schema_migration
|
|
35
|
+
elsif rails_version_equal_to_or_higher_than_7_1
|
|
36
|
+
ActiveRecord::Base.connection.schema_migration
|
|
37
|
+
else
|
|
38
|
+
ActiveRecord::SchemaMigration
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def schema_migration_versions
|
|
43
|
+
if rails_version_equal_to_or_higher_than_7_1
|
|
44
|
+
schema_migration.versions
|
|
45
|
+
else
|
|
46
|
+
schema_migration.all.pluck(:version)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def schema_create_version(version)
|
|
51
|
+
if rails_version_equal_to_or_higher_than_7_1
|
|
52
|
+
schema_migration.create_version(version)
|
|
53
|
+
else
|
|
54
|
+
schema_migration.create(version: version)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def data_schema_delete_version(version)
|
|
59
|
+
if rails_version_equal_to_or_higher_than_7_1
|
|
60
|
+
data_schema_migration.delete_version(version)
|
|
61
|
+
else
|
|
62
|
+
data_schema_migration.where(version: version.to_s).delete_all
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def data_schema_migration
|
|
67
|
+
if rails_version_equal_to_or_higher_than_7_2
|
|
68
|
+
DataMigrate::DataSchemaMigration.new(ActiveRecord::Tasks::DatabaseTasks.migration_connection_pool)
|
|
69
|
+
elsif rails_version_equal_to_or_higher_than_7_1
|
|
70
|
+
DataMigrate::DataSchemaMigration.new(ActiveRecord::Tasks::DatabaseTasks.migration_connection)
|
|
71
|
+
else
|
|
72
|
+
DataMigrate::DataSchemaMigration
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def data_migrator(
|
|
77
|
+
direction,
|
|
78
|
+
migrations,
|
|
79
|
+
schema_migration = DataMigrate::RailsHelper.schema_migration,
|
|
80
|
+
internal_metadata = DataMigrate::RailsHelper.internal_metadata,
|
|
81
|
+
target_version = nil
|
|
82
|
+
)
|
|
83
|
+
if rails_version_equal_to_or_higher_than_7_1
|
|
84
|
+
DataMigrate::DataMigrator.new(direction, migrations, schema_migration, internal_metadata, target_version)
|
|
85
|
+
else
|
|
86
|
+
DataMigrate::DataMigrator.new(direction, migrations, schema_migration, target_version)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -26,7 +26,7 @@ module DataMigrate
|
|
|
26
26
|
|
|
27
27
|
def initialize(connection)
|
|
28
28
|
@connection = connection
|
|
29
|
-
all_versions =
|
|
29
|
+
all_versions = DataMigrate::RailsHelper.data_schema_migration.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,
|
|
10
|
+
ActiveRecord::Migrator.new(:up, all_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata).
|
|
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,
|
|
17
|
+
ActiveRecord::MigrationContext.new(migration_paths, DataMigrate::RailsHelper.schema_migration).run(direction, version)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def self.sort_migrations(set1, set2 = nil)
|
|
@@ -24,9 +24,10 @@ module DataMigrate
|
|
|
24
24
|
|
|
25
25
|
def self.migrations_paths
|
|
26
26
|
spec_name = DataMigrate.config.spec_name
|
|
27
|
-
|
|
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)
|
|
28
29
|
ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: spec_name).migrations_paths
|
|
29
|
-
elsif spec_name && Gem::Dependency.new("railties", "~> 6.
|
|
30
|
+
elsif spec_name && Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
|
|
30
31
|
ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: spec_name).migrations_paths
|
|
31
32
|
else
|
|
32
33
|
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::
|
|
27
|
+
DataMigrate::RailsHelper.data_schema_migration.table_name
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def output(stream)
|
|
31
|
-
unless DataMigrate::
|
|
31
|
+
unless DataMigrate::RailsHelper.data_schema_migration.table_exists?
|
|
32
32
|
stream.puts "Data migrations table does not exist yet."
|
|
33
33
|
return
|
|
34
34
|
end
|
|
@@ -46,7 +46,7 @@ module DataMigrate
|
|
|
46
46
|
def database_name
|
|
47
47
|
if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
|
|
48
48
|
ActiveRecord::Base.connection_db_config.configuration_hash[:database]
|
|
49
|
-
elsif Gem::Dependency.new("railties", "~> 6.
|
|
49
|
+
elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
|
|
50
50
|
ActiveRecord::Base.connection_config[:database]
|
|
51
51
|
end
|
|
52
52
|
end
|
|
@@ -6,7 +6,7 @@ module DataMigrate
|
|
|
6
6
|
extend self
|
|
7
7
|
|
|
8
8
|
def migrations_paths
|
|
9
|
-
@migrations_paths ||= DataMigrate.config.data_migrations_path
|
|
9
|
+
@migrations_paths ||= Array.wrap(DataMigrate.config.data_migrations_path)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def dump
|
|
@@ -50,16 +50,18 @@ module DataMigrate
|
|
|
50
50
|
|
|
51
51
|
def status_with_schema
|
|
52
52
|
db_list_data = ActiveRecord::Base.connection.select_values(
|
|
53
|
-
"SELECT version FROM #{DataMigrate::
|
|
53
|
+
"SELECT version FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}"
|
|
54
54
|
)
|
|
55
|
-
db_list_schema =
|
|
55
|
+
db_list_schema = DataMigrate::RailsHelper.schema_migration_versions
|
|
56
56
|
file_list = []
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
58
|
+
migrations_paths.each do |path|
|
|
59
|
+
Dir.foreach(File.join(Rails.root, path)) do |file|
|
|
60
|
+
# only files matching "20091231235959_some_name.rb" pattern
|
|
61
|
+
if match_data = /(\d{14})_(.+)\.rb/.match(file)
|
|
62
|
+
status = db_list_data.delete(match_data[1]) ? 'up' : 'down'
|
|
63
|
+
file_list << [status, match_data[1], match_data[2], 'data']
|
|
64
|
+
end
|
|
63
65
|
end
|
|
64
66
|
end
|
|
65
67
|
|
|
@@ -96,7 +98,7 @@ module DataMigrate
|
|
|
96
98
|
def database_name
|
|
97
99
|
if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
|
|
98
100
|
ActiveRecord::Base.connection_db_config.database
|
|
99
|
-
elsif Gem::Dependency.new("railties", "~> 6.
|
|
101
|
+
elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
|
|
100
102
|
ActiveRecord::Base.connection_config[:database]
|
|
101
103
|
end
|
|
102
104
|
end
|
data/lib/data_migrate/version.rb
CHANGED
data/lib/data_migrate.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require File.join(File.dirname(__FILE__), "data_migrate", "rails_helper")
|
|
3
4
|
require File.join(File.dirname(__FILE__), "data_migrate", "data_migrator")
|
|
4
5
|
require File.join(File.dirname(__FILE__), "data_migrate", "data_schema_migration")
|
|
5
6
|
require File.join(File.dirname(__FILE__), "data_migrate", "data_schema")
|
|
@@ -9,9 +10,9 @@ require File.join(File.dirname(__FILE__), "data_migrate", "status_service")
|
|
|
9
10
|
require File.join(File.dirname(__FILE__), "data_migrate", "migration_context")
|
|
10
11
|
require File.join(File.dirname(__FILE__), "data_migrate", "railtie")
|
|
11
12
|
require File.join(File.dirname(__FILE__), "data_migrate", "tasks/data_migrate_tasks")
|
|
12
|
-
require File.join(File.dirname(__FILE__), "data_migrate", "legacy_migrator")
|
|
13
13
|
require File.join(File.dirname(__FILE__), "data_migrate", "config")
|
|
14
14
|
require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration")
|
|
15
|
+
require File.join(File.dirname(__FILE__), "data_migrate", "database_configurations_wrapper")
|
|
15
16
|
|
|
16
17
|
module DataMigrate
|
|
17
18
|
def self.root
|
|
@@ -38,8 +38,9 @@ module DataMigrate
|
|
|
38
38
|
File.join(data_migrations_path, "#{file_name}.rb")
|
|
39
39
|
end
|
|
40
40
|
|
|
41
|
+
# Use the first path in the data_migrations_path as the target directory
|
|
41
42
|
def data_migrations_path
|
|
42
|
-
DataMigrate.config.data_migrations_path
|
|
43
|
+
Array.wrap(DataMigrate.config.data_migrations_path).first
|
|
43
44
|
end
|
|
44
45
|
end
|
|
45
46
|
end
|
data/tasks/databases.rake
CHANGED
|
@@ -5,52 +5,8 @@ require 'data_migrate/tasks/data_migrate_tasks'
|
|
|
5
5
|
namespace :db do
|
|
6
6
|
namespace :migrate do
|
|
7
7
|
desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)."
|
|
8
|
-
task :with_data => :
|
|
9
|
-
DataMigrate::
|
|
10
|
-
|
|
11
|
-
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
|
|
12
|
-
target_version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
|
13
|
-
migrations = []
|
|
14
|
-
|
|
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
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
migrations.each do |migration|
|
|
51
|
-
DataMigrate::DatabaseTasks.run_migration(migration, migration[:direction])
|
|
52
|
-
end
|
|
53
|
-
|
|
8
|
+
task :with_data => :load_config do
|
|
9
|
+
DataMigrate::DatabaseTasks.migrate_with_data
|
|
54
10
|
Rake::Task["db:_dump"].invoke
|
|
55
11
|
Rake::Task["data:dump"].invoke
|
|
56
12
|
end
|
|
@@ -190,6 +146,13 @@ namespace :db do
|
|
|
190
146
|
end
|
|
191
147
|
end
|
|
192
148
|
end
|
|
149
|
+
|
|
150
|
+
namespace :prepare do
|
|
151
|
+
desc "Runs setup if database does not exist, or runs data and schema migrations if it does"
|
|
152
|
+
task with_data: :environment do
|
|
153
|
+
DataMigrate::DatabaseTasks.prepare_all_with_data
|
|
154
|
+
end
|
|
155
|
+
end
|
|
193
156
|
end
|
|
194
157
|
|
|
195
158
|
namespace :data do
|
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:
|
|
4
|
+
version: 11.2.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-11-14 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
|
|
@@ -189,26 +189,9 @@ executables: []
|
|
|
189
189
|
extensions: []
|
|
190
190
|
extra_rdoc_files: []
|
|
191
191
|
files:
|
|
192
|
-
- ".github/workflows/build.yml"
|
|
193
|
-
- ".github/workflows/gempush.yml"
|
|
194
|
-
- ".gitignore"
|
|
195
|
-
- ".hound.yml"
|
|
196
|
-
- ".overcommit.yml"
|
|
197
|
-
- ".rbenv-gemsets"
|
|
198
|
-
- ".rspec"
|
|
199
|
-
- ".rubocop.yml"
|
|
200
|
-
- ".ruby-style.yml"
|
|
201
|
-
- Appraisals
|
|
202
192
|
- Changelog.md
|
|
203
|
-
- Gemfile
|
|
204
|
-
- Gemfile.rails6.1
|
|
205
193
|
- LICENSE
|
|
206
194
|
- README.md
|
|
207
|
-
- Rakefile
|
|
208
|
-
- data_migrate.gemspec
|
|
209
|
-
- gemfiles/rails_6.0.gemfile
|
|
210
|
-
- gemfiles/rails_6.1.gemfile
|
|
211
|
-
- gemfiles/rails_7.0.gemfile
|
|
212
195
|
- lib/capistrano/data_migrate.rb
|
|
213
196
|
- lib/capistrano/data_migrate/migrate.rb
|
|
214
197
|
- lib/data_migrate.rb
|
|
@@ -216,9 +199,10 @@ files:
|
|
|
216
199
|
- lib/data_migrate/data_migrator.rb
|
|
217
200
|
- lib/data_migrate/data_schema.rb
|
|
218
201
|
- lib/data_migrate/data_schema_migration.rb
|
|
202
|
+
- lib/data_migrate/database_configurations_wrapper.rb
|
|
219
203
|
- lib/data_migrate/database_tasks.rb
|
|
220
|
-
- lib/data_migrate/legacy_migrator.rb
|
|
221
204
|
- lib/data_migrate/migration_context.rb
|
|
205
|
+
- lib/data_migrate/rails_helper.rb
|
|
222
206
|
- lib/data_migrate/railtie.rb
|
|
223
207
|
- lib/data_migrate/schema_dumper.rb
|
|
224
208
|
- lib/data_migrate/schema_migration.rb
|
|
@@ -229,31 +213,6 @@ files:
|
|
|
229
213
|
- lib/generators/data_migration/data_migration_generator.rb
|
|
230
214
|
- lib/generators/data_migration/templates/data_migration.rb
|
|
231
215
|
- lib/generators/data_migration/templates/migration.rb
|
|
232
|
-
- screenshot.png
|
|
233
|
-
- spec/data_migrate/config_spec.rb
|
|
234
|
-
- spec/data_migrate/data_migrator_spec.rb
|
|
235
|
-
- spec/data_migrate/data_schema_migration_spec.rb
|
|
236
|
-
- spec/data_migrate/data_spec.rb
|
|
237
|
-
- spec/data_migrate/database_tasks_spec.rb
|
|
238
|
-
- spec/data_migrate/legacy_migrator_spec.rb
|
|
239
|
-
- spec/data_migrate/migration.rb
|
|
240
|
-
- spec/data_migrate/migration_context_spec.rb
|
|
241
|
-
- spec/data_migrate/schema_dumper_spec.rb
|
|
242
|
-
- spec/data_migrate/schema_migration_spec.rb
|
|
243
|
-
- spec/data_migrate/status_service_spec.rb
|
|
244
|
-
- spec/data_migrate/tasks/data_migrate_tasks_spec.rb
|
|
245
|
-
- spec/db/data/20091231235959_some_name.rb
|
|
246
|
-
- spec/db/data/20171231235959_super_update.rb
|
|
247
|
-
- spec/db/data/20181128000207_excluded_file.rb.other_ext
|
|
248
|
-
- spec/db/data/partial_schema/data_schema.rb
|
|
249
|
-
- spec/db/data/partial_schema/test_data_schema.rb
|
|
250
|
-
- spec/db/data/schema/data_schema.rb
|
|
251
|
-
- spec/db/data/schema/test_data_schema.rb
|
|
252
|
-
- spec/db/migrate/20131111111111_late_migration.rb
|
|
253
|
-
- spec/db/migrate/20202020202011_db_migration.rb
|
|
254
|
-
- spec/generators/data_migration/data_migration_generator_spec.rb
|
|
255
|
-
- spec/spec_helper.rb
|
|
256
|
-
- tasks/.gitkeep
|
|
257
216
|
- tasks/databases.rake
|
|
258
217
|
homepage: https://github.com/ilyakatz/data-migrate
|
|
259
218
|
licenses:
|
|
@@ -274,7 +233,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
274
233
|
- !ruby/object:Gem::Version
|
|
275
234
|
version: '0'
|
|
276
235
|
requirements: []
|
|
277
|
-
rubygems_version: 3.4.
|
|
236
|
+
rubygems_version: 3.4.19
|
|
278
237
|
signing_key:
|
|
279
238
|
specification_version: 4
|
|
280
239
|
summary: Rake tasks to migrate data alongside schema changes.
|
data/.github/workflows/build.yml
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
- push
|
|
5
|
-
- pull_request
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
test:
|
|
9
|
-
strategy:
|
|
10
|
-
fail-fast: false
|
|
11
|
-
matrix:
|
|
12
|
-
os: [ "ubuntu-20.04" ]
|
|
13
|
-
ruby:
|
|
14
|
-
- '3.0'
|
|
15
|
-
- '3.1'
|
|
16
|
-
- '3.2'
|
|
17
|
-
gemfile:
|
|
18
|
-
- gemfiles/rails_6.0.gemfile
|
|
19
|
-
- gemfiles/rails_6.1.gemfile
|
|
20
|
-
- gemfiles/rails_7.0.gemfile
|
|
21
|
-
runs-on: ubuntu-latest
|
|
22
|
-
env:
|
|
23
|
-
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
|
24
|
-
RAILS_ENV: test
|
|
25
|
-
steps:
|
|
26
|
-
- name: Checkout code
|
|
27
|
-
uses: actions/checkout@v3
|
|
28
|
-
- name: Set up Ruby
|
|
29
|
-
uses: ruby/setup-ruby@v1
|
|
30
|
-
with:
|
|
31
|
-
ruby-version: ${{ matrix.ruby }}
|
|
32
|
-
bundler-cache: true
|
|
33
|
-
- name: Run tests
|
|
34
|
-
run: bundle exec rspec
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
name: Release Gem
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
release:
|
|
5
|
-
types: [released]
|
|
6
|
-
|
|
7
|
-
jobs:
|
|
8
|
-
build:
|
|
9
|
-
name: Build + Publish
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
|
|
12
|
-
steps:
|
|
13
|
-
- uses: actions/checkout@master
|
|
14
|
-
- name: Set up Ruby 3.2
|
|
15
|
-
uses: ruby/setup-ruby@v1
|
|
16
|
-
with:
|
|
17
|
-
ruby-version: '3.2'
|
|
18
|
-
|
|
19
|
-
- name: Publish to RubyGems
|
|
20
|
-
run: |
|
|
21
|
-
mkdir -p $HOME/.gem
|
|
22
|
-
touch $HOME/.gem/credentials
|
|
23
|
-
chmod 0600 $HOME/.gem/credentials
|
|
24
|
-
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
25
|
-
gem build *.gemspec
|
|
26
|
-
gem push *.gem
|
|
27
|
-
env:
|
|
28
|
-
GEM_HOST_API_KEY: ${{secrets.RUBYGEMS_AUTH_TOKEN}}
|
data/.gitignore
DELETED
data/.hound.yml
DELETED
data/.overcommit.yml
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Use this file to configure the Overcommit hooks you wish to use. This will
|
|
2
|
-
# extend the default configuration defined in:
|
|
3
|
-
# https://github.com/brigade/overcommit/blob/master/config/default.yml
|
|
4
|
-
#
|
|
5
|
-
# At the topmost level of this YAML file is a key representing type of hook
|
|
6
|
-
# being run (e.g. pre-commit, commit-msg, etc.). Within each type you can
|
|
7
|
-
# customize each hook, such as whether to only run it on certain files (via
|
|
8
|
-
# `include`), whether to only display output if it fails (via `quiet`), etc.
|
|
9
|
-
#
|
|
10
|
-
# For a complete list of hooks, see:
|
|
11
|
-
# https://github.com/brigade/overcommit/tree/master/lib/overcommit/hook
|
|
12
|
-
#
|
|
13
|
-
# For a complete list of options that you can use to customize hooks, see:
|
|
14
|
-
# https://github.com/brigade/overcommit#configuration
|
|
15
|
-
#
|
|
16
|
-
# Uncomment the following lines to make the configuration take effect.
|
|
17
|
-
|
|
18
|
-
PreCommit:
|
|
19
|
-
RuboCop:
|
|
20
|
-
enabled: true
|
|
21
|
-
on_warn: fail # Treat all warnings as failures
|
data/.rbenv-gemsets
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED