2011-04-09 63 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

相關問題