開発で頻繁にlib/database.rake
使用する場合は、これをファイルに入れてください。db:reset
require 'active_record/connection_adapters/postgresql_adapter'
module ActiveRecord
module ConnectionAdapters
class PostgreSQLAdapter < AbstractAdapter
def drop_database(name)
raise "Nah, I won't drop the production database" if Rails.env.production?
execute <<-SQL
UPDATE pg_catalog.pg_database
SET datallowconn=false WHERE datname='#{name}'
SQL
execute <<-SQL
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '#{name}';
SQL
execute "DROP DATABASE IF EXISTS #{quote_table_name(name)}"
end
end
end
end
明らかに、非運用データベースでの使用のみを目的として設計されています。既存のすべてのデータベース接続が切断されるため、unicorn/passenger/pow がデータベース接続をプールしている場合、次のページの読み込みでエラーが発生する可能性があります。これが発生した場合、単純なページの更新により、サーバーが新しい接続を開き、すべてがうまくいきます。