Jika Anda mematikan koneksi postgresql yang sedang berjalan untuk aplikasi Anda, Anda dapat menjalankan db:drop dengan baik. Jadi bagaimana cara mematikan koneksi itu? Saya menggunakan tugas menyapu berikut:
# lib/tasks/kill_postgres_connections.rake
task :kill_postgres_connections => :environment do
db_name = "#{File.basename(Rails.root)}_#{Rails.env}"
sh = <<EOF
ps xa \
| grep postgres: \
| grep #{db_name} \
| grep -v grep \
| awk '{print $1}' \
| xargs kill
EOF
puts `#{sh}`
end
task "db:drop" => :kill_postgres_connections
Memutuskan koneksi dari bawah rel terkadang akan menyebabkannya muntah saat Anda mencoba memuat halaman berikutnya, tetapi memuatnya kembali akan membuat koneksi kembali.