मैं गुणों में उपलब्ध मानों के आधार पर संसाधनों की एक परिवर्तनीय संख्या को संसाधनों में पास करना चाहता हूं।

यहाँ एक विचार है कि मैं क्या करना चाहता हूँ। गुणों के आस-पास अगर तर्क है तो मैं क्या चाहता हूं लेकिन यह सुनिश्चित नहीं है कि ऐसा कुछ करना संभव है या नहीं ...

rpms = [ 
  {
    "name": "name",
    "version": "version",
    "release": "release",
    "arch": "arch"
  },
  {
    "name": "name"
  }
]

rpms.each do | package_info |
  custom_package 'install' + package_info['name'] do
    name package_info['name']
    if defined?(package_info['version'])  # Only pass that property if it is available
      version package_info['version']
    end
    if defined?(package_info['release'])  # Only pass that property if it is available
      version package_info['release']
    end
    if defined?(package_info['arch'])  # Only pass that property if it is available
      version package_info['arch']
    end
  end
end

क्या शेफ में ऐसा कुछ उपलब्ध है?

1
Matt 1 अप्रैल 2020, 23:45

1 उत्तर

सबसे बढ़िया उत्तर

आप इसे रूबी की sendविधि का उपयोग करके कर सकते हैं, जो पहले तर्क द्वारा पहचानी गई विधि का आह्वान करता है, इसे निर्दिष्ट किसी अन्य तर्क को पारित करता है।

rpms = [ 
  {
    "name": "name",
    "version": "version",
    "release": "release",
    "arch": "arch"
  },
  {
    "name": "name"
  }
]

rpms.each do |package_info|
  custom_package "install ${package_info['name']}" do
    package_info.each do |key, value|
      send(key, value)
    end
  end
end
1
Draco Ater 2 अप्रैल 2020, 06:55