2011-04-09 8 views

Respuesta

16

es mejor si dejas que Rake maneje el paralelismo. Puedes hacerlo usando "multitareas". Dentro de la Rakefile:

desc "Start everything." 
multitask :start => [ 'mongodb:start', 'haystack:start' ] 

Background and source.

De lo contrario, presumiendo que está haciendo esto desde fuera del Rakefile, se puede usar código horrible como éste, que no sería lanzar excepciones como era de esperar, y fácilmente podría fallar en un número de maneras:

require 'rake' 
load 'Rakefile' 

def invoke(name) 
    Thread.new do 
    puts Rake::application[name].invoke 
    end 
end 

invoke :make_coffee 
invoke :boil_eggs 
invoke :empty_trash 

(lo que no se logra)

+0

Realmente no me gusta esto como una solución. Eso funciona bien siempre que ese punto de entrada particular se use para iniciar la compilación; sin embargo, solo para vencer a un caballo muerto (la opción '-j'): con' make' puedo seleccionar cualquier objetivo que desee (por ejemplo, dar una ruta explícita para que se construya una biblioteca en particular en lugar de especificar una de las conveniencias se dirige al mantenedor de construcción agregado) ... siempre y cuando suministre la opción '-j' se construye en paralelo. Parece que esta solución en particular solo funcionará siempre que tenga algo en su lugar para usar 'multitarea 'en cualquier lugar que pueda ser necesario. –

+0

@BrianVandenberg compruebe la opción de línea de comandos '--multitask', lo hace para que todas las tareas se traten como multitareas. –

Cuestiones relacionadas