From 2fb9d23c01f70578fc3c0b35323005836f73d52e Mon Sep 17 00:00:00 2001 From: Nate Riffe Date: Tue, 29 Dec 2015 19:37:00 -0600 Subject: [PATCH 1/2] Check for API support for autorequire `Socket.ip_address_list` is a new addition to ruby 1.9. Maintain support for ruby 1.8.7 by making the new autorequire feature of `resource_record` conditional on the existence of the required API. --- lib/puppet/type/resource_record.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/puppet/type/resource_record.rb b/lib/puppet/type/resource_record.rb index db9c1f6..595e77b 100644 --- a/lib/puppet/type/resource_record.rb +++ b/lib/puppet/type/resource_record.rb @@ -7,9 +7,11 @@ Puppet::Type.newtype(:resource_record) do autorequire(:service) do reqs = [] # Depend on the bind service if the record is local - reqs << 'bind' if Socket.ip_address_list.any? do |intf| - Resolv.getaddresses(self[:server]).any? do |addr| - intf.ip_address === addr + if Socket.respond_to? :ip_address_list + reqs << 'bind' if Socket.ip_address_list.any? do |intf| + Resolv.getaddresses(self[:server]).any? do |addr| + intf.ip_address === addr + end end end reqs From c4918b72958443846cd185f50f84128be64ef676 Mon Sep 17 00:00:00 2001 From: Nate Riffe Date: Wed, 30 Dec 2015 21:05:56 -0600 Subject: [PATCH 2/2] Flip the assumption If `Socket.ip_address_list` doesn't exist, then assume the dependency. --- lib/puppet/type/resource_record.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/puppet/type/resource_record.rb b/lib/puppet/type/resource_record.rb index 595e77b..7196f6b 100644 --- a/lib/puppet/type/resource_record.rb +++ b/lib/puppet/type/resource_record.rb @@ -7,11 +7,9 @@ Puppet::Type.newtype(:resource_record) do autorequire(:service) do reqs = [] # Depend on the bind service if the record is local - if Socket.respond_to? :ip_address_list - reqs << 'bind' if Socket.ip_address_list.any? do |intf| - Resolv.getaddresses(self[:server]).any? do |addr| - intf.ip_address === addr - end + reqs << 'bind' if !Socket.respond_to? :ip_address_list or Socket.ip_address_list.any? do |intf| + Resolv.getaddresses(self[:server]).any? do |addr| + intf.ip_address === addr end end reqs