2009-07-08 11 views

Respuesta

13

He aquí una solución que he visto por ahí:

En su Rakefile:

Rake::TaskManager.class_eval do 
    def remove_task(task_name) 
    @tasks.delete(task_name.to_s) 
    end 
end 

En lib/tasks/db/test.rake:

Rake.application.remove_task 'db:test:prepare' 

namespace :db do 
    namespace :test do 
    task :prepare do |t| 
     # rewrite the task to not do anything you don't want 
    end 
    end 
end 
+1

Me gusta esto. Con esto no tiene que instalar ningún complemento y funciona bien. Sin embargo, ¿qué tal si quiero usar el método de preparación en el futuro? ¿Es posible mantenerlo solo eliminarlo de la cola de ejecución de Rake? –

+0

En ese caso, supongo que tendrías que usar este método para reescribir 'test: units',' test: functionals', y 'test: integration' para que no hereden del' db: test: prepare 'tarea. – mckeed

+0

En realidad, no he probado esto, pero probablemente podría cambiar 'remove_task' a: ' def rename_task (nombre_tarea, new_task_name) @tasks [new_task_name] = @ tasks.delete (nombre_tarea) end' Usted Todavía tendrá que volver a escribir 'db: test: prepare' porque las tareas de prueba seguirán ejecutándose. – mckeed

5

Hay un complemento que se encarga de esto: override_rake_task. Aquí es un ejemplo de uso rápida:

namespace :db do 
    namespace :test do 
    override_task :prepare do; end 
    end 
end 
0

Para algunos versión anterior de los rieles: puede colocar Rake::Task['db:test:prepare'].clear al final de su Rakefile

Cuestiones relacionadas