aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/tasks/database_tasks.rb
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-03-10 01:53:48 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-03-17 05:20:46 +0900
commitfdac932707fb16b7d074b1d0bc7c255157d72675 (patch)
tree7932190a3b429886c69e3209926ce766ebce0895 /activerecord/lib/active_record/tasks/database_tasks.rb
parent1db05065434e1b5341e6748632e310060e92b80d (diff)
downloadrails-fdac932707fb16b7d074b1d0bc7c255157d72675.tar.gz
rails-fdac932707fb16b7d074b1d0bc7c255157d72675.tar.bz2
rails-fdac932707fb16b7d074b1d0bc7c255157d72675.zip
Extract `truncate` and `truncate_tables` into database statements
This is to easier make `truncate_tables` to bulk statements.
Diffstat (limited to 'activerecord/lib/active_record/tasks/database_tasks.rb')
-rw-r--r--activerecord/lib/active_record/tasks/database_tasks.rb7
1 files changed, 5 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/tasks/database_tasks.rb b/activerecord/lib/active_record/tasks/database_tasks.rb
index a8433fa0db..5a46003732 100644
--- a/activerecord/lib/active_record/tasks/database_tasks.rb
+++ b/activerecord/lib/active_record/tasks/database_tasks.rb
@@ -185,14 +185,17 @@ module ActiveRecord
def truncate_tables(configuration)
ActiveRecord::Base.connected_to(database: { truncation: configuration }) do
table_names = ActiveRecord::Base.connection.tables
- internal_table_names = [
+ table_names -= [
ActiveRecord::Base.schema_migrations_table_name,
ActiveRecord::Base.internal_metadata_table_name
]
- class_for_adapter(configuration["adapter"]).new(configuration).truncate_tables(*table_names.without(*internal_table_names))
+ ActiveRecord::Base.connection.disable_referential_integrity do
+ ActiveRecord::Base.connection.truncate_tables(*table_names)
+ end unless table_names.empty?
end
end
+ private :truncate_tables
def truncate_all(environment = env)
ActiveRecord::Base.configurations.configs_for(env_name: environment).each do |db_config|