diff --git a/Gemfile.lock b/Gemfile.lock index 6c31693..770a873 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - database_cleaner (1.6.0) + database_cleaner (1.6.1) GEM remote: https://rubygems.org/ diff --git a/lib/database_cleaner/active_record/base.rb b/lib/database_cleaner/active_record/base.rb index 1540483..42a0b51 100644 --- a/lib/database_cleaner/active_record/base.rb +++ b/lib/database_cleaner/active_record/base.rb @@ -65,6 +65,14 @@ module DatabaseCleaner end end + def self.exclusion_condition(column_name) + result = " #{column_name} <> '#{::DatabaseCleaner::ActiveRecord::Base.migration_table_name}' " + if ::ActiveRecord::VERSION::MAJOR >= 5 + result += " AND #{column_name} <> '#{ActiveRecord::Base.internal_metadata_table_name}' " + end + result + end + private def lookup_from_connection_pool diff --git a/lib/database_cleaner/active_record/deletion.rb b/lib/database_cleaner/active_record/deletion.rb index c10b3bd..59a41c4 100644 --- a/lib/database_cleaner/active_record/deletion.rb +++ b/lib/database_cleaner/active_record/deletion.rb @@ -72,7 +72,7 @@ module DatabaseCleaner::ActiveRecord INFORMATION_SCHEMA.TABLES WHERE table_schema = '#{db_name}' - AND table_name <> '#{::DatabaseCleaner::ActiveRecord::Base.migration_table_name}'; + AND #{::DatabaseCleaner::ActiveRecord::Base.exclusion_condition('table_name')}; SQL end end diff --git a/lib/database_cleaner/active_record/truncation.rb b/lib/database_cleaner/active_record/truncation.rb index d3f91c6..a470a6c 100644 --- a/lib/database_cleaner/active_record/truncation.rb +++ b/lib/database_cleaner/active_record/truncation.rb @@ -192,7 +192,7 @@ module DatabaseCleaner FROM pg_tables WHERE tablename !~ '_prt_' AND - tablename <> '#{::DatabaseCleaner::ActiveRecord::Base.migration_table_name}' AND + #{::DatabaseCleaner::ActiveRecord::Base.exclusion_condition('tablename')} AND schemaname = ANY (current_schemas(false)) _SQL rows.collect { |result| result.first }