2011-04-09 32 views

回答

16

这是更好如果让Rake处理并行性。你可以使用“多任务”来做到这一点。里面的Rake文件:

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

Background and source.

否则,假设你是从Rake文件外面做这个,你可以使用可怕的这样的代码,它不会抛出异常,你可能会想到,很容易失败在许多方面:

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 

(所以不要做)

+0

我真的不喜欢这个解决方案。只要该特定入口点用于启动构建,那就可以正常工作;然而,仅仅为了击败一匹死马('-j'选项):使用'make'我可以选择任何我想要的目标(例如,为特定的库建立一个明确的路径,而不是指定一个便利以构建维护者为目标)...只要我提供并行构建的'-j'选项。看起来好像这个特定的解决方案只有在你有可能需要的地方使用'multitask'的地方才能工作。 – 2013-02-01 21:59:56

+0

@BrianVandenberg检查出'--multitask'命令行选项,它使得所有任务都被视为多任务。 – 2016-06-09 05:48:59

相关问题