data_migrate 9.2.0 → 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.
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "9.2.0".freeze
2
+ VERSION = "9.3.0".freeze
3
3
  end
data/lib/data_migrate.rb CHANGED
@@ -12,6 +12,7 @@ require File.join(File.dirname(__FILE__), "data_migrate", "railtie")
12
12
  require File.join(File.dirname(__FILE__), "data_migrate", "tasks/data_migrate_tasks")
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
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.2.0
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-10-05 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
@@ -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
@@ -202,7 +202,6 @@ files:
202
202
  - Changelog.md
203
203
  - Gemfile
204
204
  - Gemfile.lock
205
- - Gemfile.rails6.1
206
205
  - LICENSE
207
206
  - README.md
208
207
  - Rakefile
@@ -220,6 +219,7 @@ files:
220
219
  - lib/data_migrate/data_migrator.rb
221
220
  - lib/data_migrate/data_schema.rb
222
221
  - lib/data_migrate/data_schema_migration.rb
222
+ - lib/data_migrate/database_configurations_wrapper.rb
223
223
  - lib/data_migrate/database_tasks.rb
224
224
  - lib/data_migrate/migration_context.rb
225
225
  - lib/data_migrate/rails_helper.rb
@@ -228,6 +228,7 @@ files:
228
228
  - lib/data_migrate/schema_migration.rb
229
229
  - lib/data_migrate/status_service.rb
230
230
  - lib/data_migrate/tasks/data_migrate_tasks.rb
231
+ - lib/data_migrate/test.rb
231
232
  - lib/data_migrate/version.rb
232
233
  - lib/generators/data_migrate.rb
233
234
  - lib/generators/data_migration/data_migration_generator.rb
@@ -277,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
277
278
  - !ruby/object:Gem::Version
278
279
  version: '0'
279
280
  requirements: []
280
- rubygems_version: 3.4.10
281
+ rubygems_version: 3.4.19
281
282
  signing_key:
282
283
  specification_version: 4
283
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