提交 188d671f 编写于 作者: K kennyj

Added a feature to add a database task. e.g. OracleDatabaseTasks

上级 ebe8a454
......@@ -3,13 +3,17 @@ module Tasks # :nodoc:
module DatabaseTasks # :nodoc:
extend self
TASKS_PATTERNS = {
/mysql/ => ActiveRecord::Tasks::MySQLDatabaseTasks,
/postgresql/ => ActiveRecord::Tasks::PostgreSQLDatabaseTasks,
/sqlite/ => ActiveRecord::Tasks::SQLiteDatabaseTasks
}
LOCAL_HOSTS = ['127.0.0.1', 'localhost']
def register_task(pattern, task)
@tasks ||= {}
@tasks[pattern] = task
end
register_task(/mysql/, ActiveRecord::Tasks::MySQLDatabaseTasks)
register_task(/postgresql/, ActiveRecord::Tasks::PostgreSQLDatabaseTasks)
register_task(/sqlite/, ActiveRecord::Tasks::SQLiteDatabaseTasks)
def create(*arguments)
configuration = arguments.first
class_for_adapter(configuration['adapter']).new(*arguments).create
......@@ -75,8 +79,8 @@ def structure_load(*arguments)
private
def class_for_adapter(adapter)
key = TASKS_PATTERNS.keys.detect { |pattern| adapter[pattern] }
TASKS_PATTERNS[key]
key = @tasks.keys.detect { |pattern| adapter[pattern] }
@tasks[key]
end
def each_current_configuration(environment)
......
......@@ -16,6 +16,22 @@ def setup
:postgresql => :postgresql_tasks,
:sqlite3 => :sqlite_tasks
}
class DatabaseTasksRegisterTask < ActiveRecord::TestCase
def test_register_task
klazz = Class.new do
def initialize(*arguments); end
def structure_dump(filename); end
end
instance = klazz.new
klazz.stubs(:new).returns instance
instance.expects(:structure_dump).with("awesome-file.sql")
ActiveRecord::Tasks::DatabaseTasks.register_task(/foo/, klazz)
ActiveRecord::Tasks::DatabaseTasks.structure_dump({'adapter' => :foo}, "awesome-file.sql")
end
end
class DatabaseTasksCreateTest < ActiveRecord::TestCase
include DatabaseTasksSetupper
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册