From 9f7a3c8c3a4ee532d2ad9f8afb90a25b1b9c714f Mon Sep 17 00:00:00 2001 From: James Smith Date: Sun, 2 Jul 2023 10:52:33 +0100 Subject: [PATCH 1/4] Move migrate code into DataMigrate::DatabaseTasks so that we can call it from other tasks directly without invoking rake --- lib/data_migrate/database_tasks.rb | 31 ++++++++++++++++++++++++++++++ tasks/databases.rake | 29 +--------------------------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/lib/data_migrate/database_tasks.rb b/lib/data_migrate/database_tasks.rb index 38a2a2f..dee2c47 100644 --- a/lib/data_migrate/database_tasks.rb +++ b/lib/data_migrate/database_tasks.rb @@ -173,5 +173,36 @@ def past_migrations(sort = nil) sort&.downcase == "asc" ? sort_migrations(migrations) : sort_migrations(migrations).reverse end + + def self.migrate_with_data + DataMigrate::DataMigrator.create_data_schema_table + + ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true + + db_configs = ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env) + + schema_mapped_versions = ActiveRecord::Tasks::DatabaseTasks.db_configs_with_versions(db_configs) + data_mapped_versions = DataMigrate::DatabaseTasks.db_configs_with_versions + + mapped_versions = schema_mapped_versions.merge(data_mapped_versions) do |_key, schema_db_configs, data_db_configs| + schema_db_configs + data_db_configs + end + + mapped_versions.sort.each do |version, db_configs| + db_configs.each do |db_config| + if is_data_migration = db_config.is_a?(DataMigrate::DatabaseConfigurationWrapper) + db_config = db_config.db_config + end + + DataMigrate::DatabaseTasks.with_temporary_connection(db_config) do + if is_data_migration + DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version) + else + ActiveRecord::Tasks::DatabaseTasks.migrate(version) + end + end + end + end + end end end diff --git a/tasks/databases.rake b/tasks/databases.rake index cf4b9a5..9608a4e 100644 --- a/tasks/databases.rake +++ b/tasks/databases.rake @@ -6,34 +6,7 @@ namespace :db do namespace :migrate do desc "Migrate the database data and schema (options: VERSION=x, VERBOSE=false)." task :with_data => :load_config do - DataMigrate::DataMigrator.create_data_schema_table - ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true - - db_configs = ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env) - - schema_mapped_versions = ActiveRecord::Tasks::DatabaseTasks.db_configs_with_versions(db_configs) - data_mapped_versions = DataMigrate::DatabaseTasks.db_configs_with_versions - - mapped_versions = schema_mapped_versions.merge(data_mapped_versions) do |_key, schema_db_configs, data_db_configs| - schema_db_configs + data_db_configs - end - - mapped_versions.sort.each do |version, db_configs| - db_configs.each do |db_config| - if is_data_migration = db_config.is_a?(DataMigrate::DatabaseConfigurationWrapper) - db_config = db_config.db_config - end - - DataMigrate::DatabaseTasks.with_temporary_connection(db_config) do - if is_data_migration - DataMigrate::DataMigrator.run(:up, DataMigrate::DatabaseTasks.data_migrations_path, version) - else - ActiveRecord::Tasks::DatabaseTasks.migrate(version) - end - end - end - end - + DataMigrate::DatabaseTasks.migrate_with_data Rake::Task["db:_dump"].invoke Rake::Task["data:dump"].invoke end From 01d8b811b354adc6f86855963b0933f535284e75 Mon Sep 17 00:00:00 2001 From: Ilya Katz Date: Mon, 12 Aug 2024 18:41:23 -0700 Subject: [PATCH 2/4] Add task db:prepare:with_data --- Changelog.md | 3 +++ lib/data_migrate/version.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index eb2418e..0b8040c 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,8 @@ # Changelog +## 9.4.1 + - Add db:prepare task + ## 9.4.0 - Reset model schema cache before each data migration https://github.com/ilyakatz/data-migrate/pull/307 - Run load_config rake task before db:migrate:with_data https://github.com/ilyakatz/data-migrate/pull/308 diff --git a/lib/data_migrate/version.rb b/lib/data_migrate/version.rb index 0d93159..5a4d687 100644 --- a/lib/data_migrate/version.rb +++ b/lib/data_migrate/version.rb @@ -1,3 +1,3 @@ module DataMigrate - VERSION = "9.4.0".freeze + VERSION = "9.4.1".freeze end From 20d416f4027600017a3fc461a60a8d0becebd866 Mon Sep 17 00:00:00 2001 From: Ilya Katz Date: Mon, 12 Aug 2024 18:44:20 -0700 Subject: [PATCH 3/4] Update gemfile --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 8ab0737..4823921 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - data_migrate (9.4.0) + data_migrate (9.4.1) activerecord (>= 6.1) railties (>= 6.1) From bbd5efa056df33a6b035e7dddcd63fb2887ecbb8 Mon Sep 17 00:00:00 2001 From: Ilya Katz Date: Mon, 12 Aug 2024 19:22:17 -0700 Subject: [PATCH 4/4] Update gemfile --- gemfiles/rails_6.1.gemfile.lock | 2 +- gemfiles/rails_7.0.gemfile.lock | 2 +- gemfiles/rails_7.1.gemfile.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gemfiles/rails_6.1.gemfile.lock b/gemfiles/rails_6.1.gemfile.lock index 653ff85..7c82ed1 100644 --- a/gemfiles/rails_6.1.gemfile.lock +++ b/gemfiles/rails_6.1.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - data_migrate (9.4.0) + data_migrate (9.4.1) activerecord (>= 6.1) railties (>= 6.1) diff --git a/gemfiles/rails_7.0.gemfile.lock b/gemfiles/rails_7.0.gemfile.lock index 7681df0..8a52a68 100644 --- a/gemfiles/rails_7.0.gemfile.lock +++ b/gemfiles/rails_7.0.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - data_migrate (9.4.0) + data_migrate (9.4.1) activerecord (>= 6.1) railties (>= 6.1) diff --git a/gemfiles/rails_7.1.gemfile.lock b/gemfiles/rails_7.1.gemfile.lock index 686209c..511411b 100644 --- a/gemfiles/rails_7.1.gemfile.lock +++ b/gemfiles/rails_7.1.gemfile.lock @@ -1,7 +1,7 @@ PATH remote: .. specs: - data_migrate (9.4.0) + data_migrate (9.4.1) activerecord (>= 6.1) railties (>= 6.1)