Nếu bạn loại bỏ các kết nối postgresql đang chạy cho ứng dụng của mình, thì bạn có thể chạy db:drop. Vậy làm thế nào để tiêu diệt những kết nối đó? Tôi sử dụng tác vụ cào sau:
# 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
Việc loại bỏ các kết nối từ bên dưới đường ray đôi khi sẽ khiến nó bị ngắt vào lần tiếp theo khi bạn cố tải một trang, nhưng việc tải lại nó một lần nữa sẽ thiết lập lại kết nối.