Raise a specific exception with a useful message if a rake task is requested for an unknown adapter

This commit is contained in:
Daniel Azuma 2013-01-29 17:59:08 -08:00
parent efd2be3551
commit a257d4818a
2 changed files with 10 additions and 0 deletions

View File

@ -1,6 +1,7 @@
module ActiveRecord
module Tasks # :nodoc:
class DatabaseAlreadyExists < StandardError; end # :nodoc:
class DatabaseNotSupported < StandardError; end # :nodoc:
module DatabaseTasks # :nodoc:
extend self
@ -121,6 +122,9 @@ module ActiveRecord
def class_for_adapter(adapter)
key = @tasks.keys.detect { |pattern| adapter[pattern] }
unless key
raise DatabaseNotSupported, "Rake tasks not supported by '#{adapter}' adapter"
end
@tasks[key]
end

View File

@ -31,6 +31,12 @@ module ActiveRecord
ActiveRecord::Tasks::DatabaseTasks.register_task(/foo/, klazz)
ActiveRecord::Tasks::DatabaseTasks.structure_dump({'adapter' => :foo}, "awesome-file.sql")
end
def test_unregistered_task
assert_raise(ActiveRecord::Tasks::DatabaseNotSupported) do
ActiveRecord::Tasks::DatabaseTasks.structure_dump({'adapter' => :bar}, "awesome-file.sql")
end
end
end
class DatabaseTasksCreateTest < ActiveRecord::TestCase