2013-02-04 11 views
6

मैं जानता हूँ कि मैं उप-कार्यों की एक सूची फोन और हर एक अपने प्रोजेक्ट की रेल वातावरण का उपयोग करने के लिए निम्न हो सकते हैं:"निजी" रेल पर्यावरण के साथ रैक कार्यों

task :main_task => [:sub_task1, :sub_task2] do 
end 

task :sub_task1 => :environment do 
    Model1.some_class_method 
end 

task :sub_task2 => :environment do 
    Model2.some_class_method 
end 


मेरे सवालों का

  1. हैं वहाँ :main_task में किसी भी तरह से इतना है कि मैं स्पष्ट रूप से प्रत्येक उप-कार्य में रख की जरूरत नहीं है :environment पारित करने के लिए है?
  2. क्या उप-कार्यों को "निजी" माना जाने का कोई तरीका है? यही है, मैं नहीं चाहता कि उन्हें स्पष्ट रूप से व्यक्तिगत रूप से बुलाया जाए। वे केवल :main_task से निष्पादित करेंगे। असल में मुझे एक डेटाबेस (SQLServer) से डेटा पढ़ने की आवश्यकता है और एक और (MySQL - रेल प्रोजेक्ट के डीबी) को पॉप्युलेट करना है, लेकिन मैं "पठनीय" कार्य को अच्छी पठनीयता के लिए "पॉप्युलेट" कार्य से अलग रखना चाहता हूं।

उत्तर

6

आप अन्य दो बार इससे पहले कि यह केवल एक बार सूचीबद्ध होने से पहले :environment कार्य को मूल कार्य में सूचीबद्ध कर सकते हैं।

task :main_task => [:environment, :sub_task1, :sub_task2] do 
end 

कोई "निजी" कार्य कर रहे हैं, फिर भी आप उन्हें उनके ऊपर एक desc लाइन डालने नहीं द्वारा rake -T द्वारा सूचीबद्ध होने से रख सकते हैं। यदि आप सीधे कहलाते हैं (माता-पिता को कुछ पता लगाना, या कुछ ऐसे) को अपवाद फेंक कर आप उन्हें मैन्युअल रूप से लागू कर सकते हैं।

हालांकि, आपके पास शायद एक साझा विधि या कक्षा में कोड डालने का बेहतर समय होगा जो सीधे रेक कार्य के रूप में प्रकट नहीं होता है।

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