From 4d7c072da3b61d26ef86df0fde096c5f8dad4fc5 Mon Sep 17 00:00:00 2001 From: Lin Jen-Shin Date: Mon, 7 Aug 2017 17:11:11 +0800 Subject: [PATCH] Reset only migration models So that we could make sure migration tests could run even if geo is not setup in EE. This is because we have a model like this: ``` ruby class Geo::BaseRegistry < ActiveRecord::Base def self.connection raise 'Geo secondary database is not configured' unless Gitlab::Geo.geo_database_configured? super end end ``` --- spec/spec_helper.rb | 4 ++-- spec/support/migrations_helpers.rb | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 06769b241ad..0ba6ed56314 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -134,13 +134,13 @@ RSpec.configure do |config| ActiveRecord::Migrator .migrate(migrations_paths, previous_migration.version) - ActiveRecord::Base.descendants.each(&:reset_column_information) + reset_column_in_migration_models end config.after(:example, :migration) do ActiveRecord::Migrator.migrate(migrations_paths) - ActiveRecord::Base.descendants.each(&:reset_column_information) + reset_column_in_migration_models end config.around(:each, :nested_groups) do |example| diff --git a/spec/support/migrations_helpers.rb b/spec/support/migrations_helpers.rb index 91fbb4eaf48..aabdad13047 100644 --- a/spec/support/migrations_helpers.rb +++ b/spec/support/migrations_helpers.rb @@ -15,6 +15,16 @@ module MigrationsHelpers ActiveRecord::Migrator.migrations(migrations_paths) end + def reset_column_in_migration_models + described_class.constants.sort.each do |name| + const = described_class.const_get(name) + + if const.is_a?(Class) && const < ActiveRecord::Base + const.reset_column_information + end + end + end + def previous_migration migrations.each_cons(2) do |previous, migration| break previous if migration.name == described_class.name