2010-12-02 21 views

cevap

34

Sen ad kullanarak bunu yapabilirsiniz:

Genellikle
task :foo do 
    # stuff 
end 

task :bar do 
    # INVOKE :foo 
end 
+4

Peki neden bu işe yaramaz?'görevi: d,: roles => [: app] son ​​dağıtımı aç ' –

+0

Bir yan not: Bu adla varolan bir Capistrano yöntemini gölgelediği için' test 'ad alanını kullanmamalısınız. Bir 'ArgumentError' yükseltilmiş olsun. –

+0

evet bunun için üzgünüm, bu sadece bir örnek, daha anlamlı bir isim alanı seçeceğine inanıyorum. – mpapis

5

Eğer tanımlayarak bağımlılıkları bunu

namespace :test do 
    task :one do 
    end 
    task :two do 
    test.one 
    #or just directly call it: 
    one 
    end 
end 

Sadece adıyla dikkatli olun Bazı önemli işlevlerin üzerine yazmamak için kullanırsınız.

90

Kayıt için: Capistrano 3'te invoke() kullanın, örn. Görev başka ad yaşıyorsa https://github.com/capistrano/capistrano#before--after

+11

sadece bir not: 'invoke' doğrudan 'görev',' '' '' '' içi' ya da diğer blokların içinde olmalıdır. aksi halde işe yaramaz. –

+0

Bir görevi başka bir görev bloğu içinde nasıl yeniden kullanırsınız? – kaizenCoder

+0

@aspiringCodeArtisan, kullanım durumlarından biri, küçük bir dizi için genel görev oluşturuyor. –

1

de

desc "Task that does something" 
task :do_something do 
    invoke 'namespace:task' 
end 

Daha, bunun yerine find_and_execute_task kullanabilirsiniz.

2

Ayrıca Rake::Task["namespace:task"].invoke kullanabilirsiniz, bu çalışır

İlgili konular