# frozen_string_literal: true module ActiveRecord module Tasks # The following magic allows to drop a PG database even if a connection exists # @see https://stackoverflow.com/a/38710021 class PostgreSQLDatabaseTasks include ActiveRecord::Sanitization::ClassMethods def drop establish_master_connection q = sanitize_sql_array [ "select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity where datname= ? AND state='idle';", configuration['database'] ] connection.select_all q connection.drop_database configuration['database'] end end end end