बावर्ची - पुस्तकालय
शेफ में लाइब्रेरी संकलित तर्क को संक्षिप्त करने के लिए एक जगह प्रदान करती है ताकि कुकबुक व्यंजनों को साफ और स्वच्छ रहें।
लाइब्रेरी बनाना
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)