PostgreSQL: Connect to template1 database when creating or dropping db

* The template1 database is always available on a PostgreSQL install
 * The previous behavior expected a database with the same name as the
   connecting user, which may not be available

Signed-off-by: Michael Koziarski <michael@koziarski.com>

[#38 state:resolved]
This commit is contained in:
Pete Deffendol
2008-04-22 14:23:17 -06:00
committed by Michael Koziarski
parent 96980bd561
commit 205750c8de

View File

@@ -45,7 +45,7 @@ namespace :db do
when 'postgresql'
@encoding = config[:encoding] || ENV['CHARSET'] || 'utf8'
begin
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
ActiveRecord::Base.establish_connection(config.merge('database' => 'template1'))
ActiveRecord::Base.connection.create_database(config['database'], :encoding => @encoding)
ActiveRecord::Base.establish_connection(config)
rescue
@@ -373,7 +373,7 @@ def drop_database(config)
when /^sqlite/
FileUtils.rm(File.join(RAILS_ROOT, config['database']))
when 'postgresql'
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
ActiveRecord::Base.establish_connection(config.merge('database' => 'template1'))
ActiveRecord::Base.connection.drop_database config['database']
end
end