एक बड़ी परियोजना के लिए सबसे अच्छा तरीका जानने की कोशिश कर रहा है। run_list
पर नुस्खा जोड़ने के विरोध में include_recipe
का उपयोग कर रेसिपी के भीतर व्यंजनों को जोड़ने के लिए उचित कब है? क्या अंगूठे का अच्छा नियम है?क्या मुझे include_recipe का उपयोग करना चाहिए या नुस्खा को run_list में जोड़ना चाहिए?
उत्तर
जैसा कि मैंने इसे देखा है, कोई भी नुस्खा अपनी खाली मशीन पर चलने में सक्षम होना चाहिए। तो अगर कुछ नुस्खा ए रेसिपी बी पर निर्भर करता है तो इससे पहले, मैं हमेशा include_recipe का उपयोग करता हूं।
उदाहरण के लिए: 2 कुकबुक, टोमकैट और जावा। टॉमकैट को जावा की आवश्यकता है।
कुछ उपयोगकर्ता बिल्ला इंस्टॉल करना चाहता है, वह पता नहीं कि वह वास्तव में इसे स्थापित करने के लिए कुछ अन्य रसोई की किताब की आवश्यकता हो सकती है। वह टॉमकैट रेसिपी चलाता है और या तो यह कुछ पूरी तरह से अनुपयोगी त्रुटि संदेश जैसे "नो जावा मिला" या इससे भी बदतर में विफल रहता है - यह सफल होता है, लेकिन फिर निश्चित रूप से उपयोगकर्ता टॉमकैट शुरू नहीं कर सकता है, क्योंकि उसके पास जावा स्थापित नहीं है।
लेकिन जब वहाँ बिल्ला रसोई की किताब में एक
include_recipe 'java'
लाइन है, जो भी मेटाडाटा में एकdepends 'java'
लाइन, उपयोगकर्ता जब बिल्ला स्थापित करने का प्रयास की आवश्यकता है, समझा जा सकता त्रुटि संदेश दिखाई देगा: "रसोई की किताब जावा नहीं मिला"। इस तरह वास्तव में उपयोगकर्ता वास्तव में व्यंजनों को चलाने के बिना निर्भरता डाउनलोड कर सकते हैं (या यहां तक कि कुछ स्वचालित उपकरण के साथ), लेकिन मेटाडेटा पढ़ना।
सभी तर्कों को रन सूचियों के साथ नियंत्रित किया जाना चाहिए। कुकबुक, जितना संभव हो उतना प्रयास करें, वे फिर से उपयोग करने योग्य नहीं हैं क्योंकि लोग सोचना चाहते हैं। सभी include_recipe
एक और स्थान जोड़ता है जहां उपयोगकर्ताओं को यह पता लगाना पड़ता है कि रन सूची क्या करने जा रही है, इसलिए इसे स्पष्ट बनाएं और इसे रन सूची में रखें।
मुझे लगता है कि निर्भरता स्पष्ट करने के लिए किसी को 'include_recipe' का उपयोग करना चाहिए। – user1071847
- 1. क्या मुझे प्रोटोटाइप का उपयोग करना चाहिए या नहीं?
- 2. क्या मुझे बूटस्ट्रैप का उपयोग करना चाहिए?
- 3. मुझे क्या gacutil.exe का उपयोग करना चाहिए?
- 4. क्या मुझे ढांचे का उपयोग करना चाहिए?
- 5. क्या मुझे HttpRuntime.Cache का उपयोग करना चाहिए?
- 6. क्या मुझे jQuery.each() का उपयोग करना चाहिए?
- 7. क्या मुझे ProGuard का उपयोग करना चाहिए?
- 8. क्या मुझे jQuery.inArray() का उपयोग करना चाहिए?
- 9. मुझे क्या करना चाहिए?
- 10. क्या मुझे गिट स्थिति का विश्लेषण करना चाहिए या गिटारप का उपयोग करना चाहिए?
- 11. क्या मुझे "5.12.0 का उपयोग करना चाहिए; चेतावनियों का उपयोग करना चाहिए;" एक पर्ल मॉड्यूल में?
- 12. जावा: क्या मुझे फ्लोट या फ़्लोट का उपयोग करना चाहिए?
- 13. क्या मुझे श्रोता या पर्यवेक्षक का उपयोग करना चाहिए?
- 14. क्या मुझे एम या पीएक्स का उपयोग करना चाहिए?
- 15. शेयरपॉइंट: क्या मुझे सूचियों या डेटाबेस का उपयोग करना चाहिए?
- 16. क्या मुझे टेक्स्ट फ़ाइल या डेटाबेस का उपयोग करना चाहिए?
- 17. क्या मुझे स्लीप() का उपयोग करना चाहिए या बस उन्हें
- 18. क्या मुझे अलार्ममेनगर या हैंडलर का उपयोग करना चाहिए?
- 19. क्या मुझे AppDomain.CurrentDomain.BaseDirectory या System.Environment.CurrentDirectory का उपयोग करना चाहिए?
- 20. क्या मुझे विरासत या संरचना का उपयोग करना चाहिए?
- 21. क्या मुझे डेटा.फ्रेम या मैट्रिक्स का उपयोग करना चाहिए?
- 22. क्या मुझे eval() या call_user_func() का उपयोग करना चाहिए?
- 23. क्या मुझे इंटरफ़ेस निर्माता का उपयोग करना चाहिए या नहीं?
- 24. क्या मुझे WPF कनवर्टर या ट्रिगर का उपयोग करना चाहिए?
- 25. क्या मुझे QScopedPointer या std :: unique_ptr का उपयोग करना चाहिए?
- 26. क्या मुझे int या UInt16 का उपयोग करना चाहिए?
- 27. एचटीएमएल। क्या मुझे सीडीएटीए का उपयोग करना चाहिए या HTML
- 28. क्या मुझे फ़्लैश या फ्लेक्स का उपयोग करना चाहिए?
- 29. क्या मुझे डबल या फ्लोट का उपयोग करना चाहिए?
- 30. क्या मुझे scipy.pi, numpy.pi, या math.pi का उपयोग करना चाहिए?
व्यंजनों की पुनरावृत्ति से बचने के बारे में शेफ कितना बुद्धिमान है? तो यदि आपकी कुकबुक 'पैरेंट' पर निर्भर करती है, तो आप 'शामिल_recipe parent' और कुछ अनजान आत्मा रन सूची में 'पैरेंट' जोड़ती है, क्या 'parent :: default.rb' दो बार दौड़ती है? यदि 'पैरेंट' को सही ढंग से तैयार किया गया है] (http://docs.opscode.com/chef_why.html#idempotence), मशीन के साथ कुछ भी बुरा नहीं होगा, लेकिन जब आप बूटस्ट्रैप/एक नया अभिसरण करते हैं तो यह कितना समय बर्बाद हो जाएगा नोड? यदि शेफ डुप्लिकेशन को डुबकी में स्वचालित नहीं है, तो क्या इसे मैन्युअल रूप से टालने के लिए एक अनुशंसित तरीका है? –
यह एक ही नुस्खा कई बार लोड नहीं करता है। यह इसे छोड़ देता है, अगर उसने इसे पहले ही देखा है। –
मुझे लगता है कि यह बेवकूफता का लाभ है: यदि आप एक ही परिणाम प्राप्त करने की गारंटी देते हैं, भले ही आप इसे कितनी बार चलाते हैं, तो आप जानते हैं कि यदि आप पहले ही चल चुके हैं तो आप उसे छोड़ सकते हैं! धन्यवाद ड्रैको। –