2011-05-08 17 views
7

que estoy usando cada vez que programo tareas para una aplicación de rieles.programando tareas secuenciales con cada gema

que tienen una tarea como:

every 24.hours do 
    command "do_this" 
    rake "do_that" 
end 

mi punto es, cuando escribo a mi crontab, con cada vez -w, veo que genera dos tareas independientes que funcionan al mismo tiempo. el problema es que ambos son lógicamente una secuencia, es decir, la tarea de rake, "do_that", debe ejecutarse solo si el comando "do_this" ya se ejecutó correctamente.

Intenté ponerme en contacto con los dos comandos como "do_this" & & rake "do_that" pero recibí un error de sintaxis.

  • ¿Existe algún truco para crear esta dependencia entre tareas en cualquier momento?

  • ¿El crontab ejecuta los trabajos al mismo tiempo, en paralelo o procesa N tareas programadas al mismo tiempo en una cola?

+0

¿Por qué no se pasa el segundo comando al primero? Me parece que si están relacionados de manera lógica, debes mantenerlos juntos. Mejor aún, haga una tarea envoltorio que llame a estos dos y programe eso. –

+0

No quiero unir el comando "do_this" y rastrillar "do_that". Uso el comando "do_this" para otras cosas. Por supuesto, podría crear un comando "do_something_else" con ambos, pero solo quiero saber si es posible hacer un logican Y entre comandos con cada vez. –

+0

Bueno, en primer lugar, el argumento de que desea utilizar una de las tareas de rake por separado no es realmente aplicable aquí, ya que las dos tareas están lógicamente acopladas. Para responder a su segunda declaración, ya que all siempre que lo haga es imprimir un comando crontab y cron no es compatible con AND lógico, no, no es posible. –

Respuesta

6

creo que hay dos cosas que podría hacer:

(1) Ejecutar el comando de la tarea rake:

task :do_that => :environment do 
    system "do_this" 
    ... 
end 

y simplificar su archivo schedule.rb a:

every 24.hours do 
    rake "do_that" 
end 

(2) Ejecutar todo desde la línea de comandos:

every 24.hours do 
    command "do_this && rake do_that" 
end 
+0

buenas ideas, lo intentaré, gracias! –