lib/tasks/database.rake
# Sadly, we have to monkeypatch Rake because all of the Rails database tasks are
# hardcoded for specific adapters, with no extension points (!)
Rake::TaskManager.class_eval do
def remove_task(task_name)
@tasks.delete(task_name.to_s)
end
end
def remove_task(task_name)
Rake.application.remove_task(task_name)
end
def wrap_task(task_name, &wrapper)
wrapped_task = Rake::Task[task_name]
remove_task(Rake::Task.scope_name(Rake.application.current_scope,
task_name))
task(task_name) do
wrapper.call(wrapped_task)
end
end
namespace :db do
namespace :test do
wrap_task :purge do |wrapped_task|
if ActiveRecord::Base.configurations["test"]["adapter"] == "nulldb"
# NO-OP
else
wrapped_task.invoke
end
end
end
end