मान लीजिए कि हम दो संसाधन हैं करते हैं:ब्लॉक तरीकों (महाराज संसाधन) नहीं दिख रहा है
template 'template1' do
owner 'root'
group 'root'
end
template 'template2' do
owner 'root'
group 'root'
end
मैं संसाधनों के अंदर कोड का पुन: उपयोग करना चाहते हैं। हालांकि, अगर मैं नुस्खा में एक proc परिभाषित करता हूं, तो आपको owner
, group
आदि के लिए NoMethodError मिलता है। ऐसा क्यों होता है? लेक्सिकल गुंजाइश अलग नहीं है, है ना? नतीजतन मुझे self.instance_eval &common_cfg
का उपयोग करना होगा।
common_cfg = Proc.new {
owner 'root'
group 'root'
}
template 'template1' do
common_cfg.call
end
template 'template2' do
common_cfg.call
end
है अगर आप इसे एक वैश्विक ('$ common_cfg') बनाने त्रुटि होती है? –
प्रो वैरिएबल का मूल्यांकन ठीक है, क्योंकि NoMethodError proc (मालिक, समूह इत्यादि) के संदर्भ में होता है – m33lky
ओह; गेटचा - टिप्पणी हटा देंगे। –