# 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