2010-12-02 8 views

उत्तर

34

आप नाम स्थान का उपयोग करके यह कर सकते हैं:

task :foo do 
    # stuff 
end 

task :bar do 
    # INVOKE :foo 
end 
+4

तो क्यों यह काम नहीं करता है? 'कार्य: डी,: भूमिकाएं => [: ऐप] अंत ' –

+0

तैनात करें एक साइड नोट: आपको' टेस्ट 'नामस्थान का उपयोग नहीं करना चाहिए क्योंकि यह उस नाम के साथ मौजूदा कैपिस्ट्रानो विधि को छाया करता है। आपको उठाए गए 'ArgumentError' मिलेगा। –

+0

हाँ इसके लिए खेद है, यह केवल उदाहरण था, मैंने माना है कि आप कुछ और सार्थक नामस्थान चुनेंगे। – mpapis

5

आम तौर पर आप को परिभाषित निर्भरता करके ऐसा कर

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

बस नाम के साथ सावधान रहना आप कुछ महत्वपूर्ण फ़ंक्शन को ओवरराइट करने के लिए उपयोग नहीं करते हैं।

90

रिकॉर्ड के लिए: Capistrano 3 में, invoke() का उपयोग करें, उदा।

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

https://github.com/capistrano/capistrano#before--after

+11

सिर्फ एक नोट: 'invoke' सीधे' task', '''',' भीतर 'या अन्य ब्लॉक के अंदर होना चाहिए। अन्यथा यह काम नहीं करेगा। –

+0

आप किसी अन्य कार्य के ब्लॉक में किसी कार्य का पुन: उपयोग कैसे करेंगे? – kaizenCoder

+0

@aspiringCodeArtisan, उपयोग मामलों में से एक छोटे बच्चों की एक श्रृंखला के लिए सामान्य कार्य बना रहा है। –

1

पर अधिक कार्य एक और नाम स्थान में रहता है, तो आप find_and_execute_task बजाय उपयोग कर सकते हैं।

2

आप भी Rake::Task["namespace:task"].invoke इस्तेमाल कर सकते हैं, इस काम करता है

संबंधित मुद्दे