2011-04-09 12 views

cevap

16

daha iyi olur Rake'in paralellikle başa çıkmasına izin verirseniz. Bunu "multitask" kullanarak yapabilirsiniz. Rakefile İçinde: Aksi

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

Background and source.

, sen Rakefile dışından yapıyoruz varsayarsak, sen Tahmin edebileceğiniz gibi istisnalar atmak olmaz ve kolayca başarısız olabilecek şekilde, böyle korkunç kodu kullanabilirsiniz bir dizi yolla içinde:

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

Bunu gerçekten bir çözüm olarak sevmiyorum. Bu, belirli giriş noktası, yapıyı başlatmak için kullanıldığı sürece iyi çalışır; Ancak, sadece ölü bir atı ('-j' seçeneğini) dövmek için: 'make'le istediğim herhangi bir hedefi seçebilirim (örneğin, belirli bir kütüphane için kolaylıktan birisini belirtmek yerine belirli bir kütüphane için açık bir yol verin) Yapılandırma görevlisini ekledi) ... '-j' seçeneğini sağladığım sürece paralel olarak kurulur. Görünüşe göre bu özel çözüm, 'multitask' kullanmak için potansiyel olarak ihtiyaç duyulan her yerde kullanabileceğiniz bir şeyiniz olduğu sürece çalışacaktır. –

+0

@BrianVandenberg '--multitask' komut satırı seçeneğini işaretleyin, böylece tüm görevlerin çoklu görev olarak ele alınmasını sağlar. –

İlgili konular