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)
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. –
@BrianVandenberg compruebe la opción de línea de comandos '--multitask', lo hace para que todas las tareas se traten como multitareas. –