2012-01-13 21 views
11

En la línea de comandos que se puede ejecutar múltiples tareas como esta¿Cómo ejecuto varias tareas de Rake programáticamente a la vez?

rake environment task1 task2 task3 

¿Cómo puedo hacer esto mediante programación I? Sé que puedo ejecutar una tarea como esta

Rake::Task['task1'].invoke 
+1

No se puede llamar a la línea de 'invoke' más de una vez? – Gareth

+0

respuestas a las siguientes respuestas implícitas a esto: http://stackoverflow.com/questions/3530/how-do-i-rake-tasks-within-a-ruby-script –

Respuesta

14

Puede llamar a dos tareas:

require 'rake' 

task :task1 do |t| 
    p t 
end 
task :task2 do |t| 
    p t 
end 


Rake::Task["task1"].invoke 
Rake::Task["task2"].invoke 

Preferiría un nuevo tast con pre requisitos:

require 'rake' 

task :task1 do |t| 
    p t 
end 
task :task2 do |t| 
    p t 
end 
desc "Common task" 
task :all => [ :task1, :task2 ] 
Rake::Task["all"].invoke 

Si no he entendido bien su pregunta y que quiere ejecutar la misma tarea dos veces: Puede reenable tareas:

require 'rake' 

task :task1 do |t| 
    p t 
end 
Rake::Task["task1"].invoke 
Rake::Task["task1"].reenable 
Rake::Task["task1"].invoke 
+0

yup, supongo que solo necesitaba invocar dos tareas una después de la otra. – codefinger

2

Hacer una tarea rastrillo para ello: P

# in /lib/tasks/some_file.rake 
namespace :myjobs do 
    desc "Doing work, son" 
    task :do_work => :environment do 
    Rake::Task['resque:work'].invoke 
    start_some_other_task 
    end 

    def start_some_other_task 
    # custom code here 
    end 
end 

A continuación, sólo llamarlo:

rake myjobs:do_work 
+0

Tenía la esperanza de hacerlo sin crear rastrillo adicional Tareas. No me estoy ejecutando desde la línea de comando, así que tendría que invocar Rake :: Task ['myjobs: do_work']. Voy a intentar esto. – codefinger

+0

'Rake :: Task ['myjobs: do_work']. Invoke' funciona también. Simplemente agradable para consolidar las cosas, IMO. Más fácil de mantener en el futuro – iwasrobbed

Cuestiones relacionadas