database_tasks.rb 1000 字节
Newer Older
P
Pat Allan 已提交
1
class ActiveRecord::Tasks::DatabaseTasks
2 3
  TASKS_PATTERNS = {
    /mysql/      => ActiveRecord::Tasks::MySQLDatabaseTasks,
4
    /postgresql/ => ActiveRecord::Tasks::PostgreSQLDatabaseTasks,
5 6
    /sqlite/     => ActiveRecord::Tasks::SQLiteDatabaseTasks
  }
P
Pat Allan 已提交
7

8 9
  def self.create(configuration)
    class_for_adapter(configuration['adapter']).new(configuration).create
P
Pat Allan 已提交
10 11
  rescue Exception => error
    $stderr.puts error, *(error.backtrace)
P
Pat Allan 已提交
12 13
    $stderr.puts "Couldn't create database for #{configuration.inspect}"
  end
14

P
Pat Allan 已提交
15 16 17 18 19 20 21 22 23 24 25
  def self.drop(configuration)
    class_for_adapter(configuration['adapter']).new(configuration).drop
  rescue Exception => error
    $stderr.puts error, *(error.backtrace)
    $stderr.puts "Couldn't drop #{configuration['database']}"
  end

  def self.purge(configuration)
    class_for_adapter(configuration['adapter']).new(configuration).purge
  end

26 27 28 29
  def self.class_for_adapter(adapter)
    key = TASKS_PATTERNS.keys.detect { |key| adapter[key] }
    TASKS_PATTERNS[key]
  end
P
Pat Allan 已提交
30
end