2009-07-08 11 views

risposta

13

Ecco una soluzione che ho visto in giro:

Nel vostro Rakefile:

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

In 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

Mi piace. Con questo non devi installare alcun plugin e funziona bene. Tuttavia, che dire se voglio utilizzare il metodo di preparazione in futuro? È possibile tenerlo solo rimuovendolo dalla coda di Rake running? –

+0

In questo caso, suppongo che dovresti usare questo metodo per riscrivere 'test: units',' test: functionals' e 'test: integration' in modo che non ereditino dal' db: test: prepare 'compito. – mckeed

+0

In realtà, non ho ancora testato questo, ma probabilmente si potrebbe cambiare 'remove_task' a: ' def rename_task (nome_attività, new_task_name) @tasks [new_task_name] = @ tasks.delete (nome_attività) FINE' È Dovrò ancora riscrivere 'db: test: prepare' perché le attività di test continueranno ad eseguirlo. – mckeed

5

C'è un plugin che si occupa di questo per voi: override_rake_task. Ecco un esempio di utilizzo rapido:

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

Per alcuni versione precedente delle guide: puoi inserire Rake::Task['db:test:prepare'].clear alla fine del tuo Rakefile

Problemi correlati