try to create the database through ActiveRecord

git-svn-id: file:///home/svn/framework3/trunk@9267 4d416f70-5f16-0410-b530-b9f4589650da
unstable
James Lee 2010-05-10 06:14:57 +00:00
parent 9a141294a9
commit 1e85142054
1 changed files with 29 additions and 0 deletions

View File

@ -151,6 +151,8 @@ class DBManager
nopts['pool'] = 256
begin
create_db(nopts)
# Configure the database adapter
ActiveRecord::Base.establish_connection(nopts)
@ -172,6 +174,33 @@ class DBManager
@active = true
end
#
# Attempt to create the database
#
# If the database already exists this will fail and we will continue on our
# merry way, connecting anyway. If it doesn't, we try to create it. If
# that fails, then it wasn't meant to be and the connect will raise a
# useful exception so the user won't be in the dark; no need to raise
# anything at all here.
#
def create_db(opts)
begin
case opts["adapter"]
when 'sqlite3'
# Sqlite just needs the file to be writable. ActiveRecord creates
# it if it doesn't exist and checks permissions if it does. This
# all happens during establish_connection(), so we don't need to
# bother with creating anything here.
when 'postgresql','mysql'
ActiveRecord::Base.establish_connection(opts.merge('database' => nil))
ActiveRecord::Base.connection.create_database(opts['database'])
ActiveRecord::Base.remove_connection
end
rescue ::Exception => e
ilog("Trying to continue despite failed database creation: #{e}")
end
end
#
# Disconnects a database session
#