बावर्ची - पुस्तकालय

शेफ में लाइब्रेरी संकलित तर्क को संक्षिप्त करने के लिए एक जगह प्रदान करती है ताकि कुकबुक व्यंजनों को साफ और स्वच्छ रहें।

लाइब्रेरी बनाना

Step 1 - कुकबुक की लाइब्रेरी में एक सहायक विधि बनाएं।

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb 
class Chef::Recipe 
def netmask(ipaddress) 
IPAddress(ipaddress).netmask 
end 
end

Step 2 - सहायक विधि का उपयोग करें।

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/recipes/default.rb 
ip = '10.10.0.0/24' 
mask = netmask(ip) # here we use the library method 
Chef::Log.info("Netmask of #{ip}: #{mask}")

Step 3 - बावर्ची सर्वर के लिए संशोधित रसोई की किताब अपलोड करें।

vipin@laptop:~/chef-repo $ knife cookbook upload my_cookbook 
Uploading my_cookbook [0.1.0]

लाइब्रेरी का परीक्षण

user@server $ sudo chef-client 
...TRUNCATED OUTPUT... 
[2013-01-18T14:38:26+00:00] INFO: Netmask of 10.10.0.0/24: 
255.255.255.0 
...TRUNCATED OUTPUT...

कार्य विधि

शेफ लाइब्रेरी कोड शेफ :: रेसिपी क्लास खोल सकते हैं और चरण 1 में किए गए नए तरीके जोड़ सकते हैं। यह कदम सबसे साफ नहीं है लेकिन इसे करने का सबसे सरल तरीका है।

class Chef::Recipe 
def netmask(ipaddress) 
... 
end 
end

सर्वोत्तम प्रथाएं

एक बार जब हम शेफ़ :: रेसिपी क्लास खोलते हैं, तो ऐसे बदलाव होते हैं कि यह प्रदूषित हो जाता है। एक सर्वोत्तम अभ्यास के रूप में, यह हमेशा पुस्तकालय के अंदर एक नई उप कक्षा को पेश करने और एक विधि को वर्ग विधि के रूप में परिभाषित करने का एक बेहतर तरीका है। यह महाराज :: नुस्खा नाम स्थान को खींचने से बचता है।

vipin@laptop:~/chef-repo $ subl cookbooks/my_cookbook/libraries/ipaddress.rb 
class Chef::Recipe::IPAddress 
def self.netmask(ipaddress) 
IPAddress(ipaddress).netmask 
end 
end

हम रेसिपी के अंदर की विधि का उपयोग कर सकते हैं जैसे

IPAddress.netmask(ip)