From ce78eff888f992f6373b522aef8fe7c999f6054e Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Mon, 16 Dec 2019 14:11:55 -0500 Subject: [PATCH] FIX: Migration paths were being forgotten According to the [Rails Source](https://github.com/rails/rails/blob/master/activerecord/lib/active_record/railties/databases.rake#L20) the `ActiveRecord::Migrator.migrations_paths` are overwritten with the value of `ActiveRecord::Tasks::DatabaseTasks.migrations_paths` every time the config is loaded. This caused a bug for Discourse development where if you ran: `rake db:drop db:create db:migrate` in one line, you would not get our post migrations, as those had a custom value for `migrations_paths`. The fix is to use `ActiveRecord::Tasks::DatabaseTasks.migrations_paths` to set up all our custom paths. Everything seems to work as expected. --- config/initializers/000-post_migration.rb | 2 +- lib/plugin/instance.rb | 2 +- lib/turbo_tests/runner.rb | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/initializers/000-post_migration.rb b/config/initializers/000-post_migration.rb index c5dfc682cb3..31d5370e97b 100644 --- a/config/initializers/000-post_migration.rb +++ b/config/initializers/000-post_migration.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true unless Discourse.skip_post_deployment_migrations? - ActiveRecord::Migrator.migrations_paths << Rails.root.join( + ActiveRecord::Tasks::DatabaseTasks.migrations_paths << Rails.root.join( Discourse::DB_POST_MIGRATE_PATH ).to_s end diff --git a/lib/plugin/instance.rb b/lib/plugin/instance.rb index 8723cf2d9f1..5ab61aa1bdc 100644 --- a/lib/plugin/instance.rb +++ b/lib/plugin/instance.rb @@ -526,7 +526,7 @@ class Plugin::Instance Rake.add_rakelib(File.dirname(path) + "/lib/tasks") # Automatically include migrations - migration_paths = ActiveRecord::Migrator.migrations_paths + migration_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths migration_paths << File.dirname(path) + "/db/migrate" unless Discourse.skip_post_deployment_migrations? diff --git a/lib/turbo_tests/runner.rb b/lib/turbo_tests/runner.rb index 0e015bf87de..89ba1bdbed3 100644 --- a/lib/turbo_tests/runner.rb +++ b/lib/turbo_tests/runner.rb @@ -84,7 +84,7 @@ module TurboTests .configurations["test"] .merge("database" => "discourse_test_1") - ActiveRecord::Migrator.migrations_paths = ['db/migrate', 'db/post_migrate'] + ActiveRecord::Tasks::DatabaseTasks.migrations_paths = ['db/migrate', 'db/post_migrate'] conn = ActiveRecord::Base.establish_connection(config).connection begin