class DNS::ResolveHost
Constants
- ResolutionError
Attributes
nameserver_address[RW]
nameserver_port[W]
Public Class Methods
build(address: nil, port: nil, hosts_file: nil)
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 12 def self.build(address: nil, port: nil, hosts_file: nil) if address.nil? and not port.nil? raise ArgumentError, "Cannot specify port without address" end instance = new StaticResolver.configure instance, hosts_file, attr_name: :hosts_resolver instance.nameserver_address = address if address instance.nameserver_port = port if port instance end
call(hostname, &block)
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 27 def self.call(hostname, &block) instance = new instance.(hostname, &block) end
Public Instance Methods
call(hostname, &block)
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 32 def call(hostname, &block) logger.trace { "Resolving host (#{LogAttributes.get self, hostname})" } Resolv::DNS.open dns_resolver_options do |dns_resolver| resolver = Resolv.new [hosts_resolver, dns_resolver] block.(dns_resolver) if block addresses = resolver.getaddresses hostname addresses.map! &:to_s if addresses.empty? error_message = "Could not resolve host (#{LogAttributes.get self, hostname})" logger.error { error_message } raise ResolutionError, error_message end logger.info { "Resolved host (#{LogAttributes.get self, hostname}, Address#{'es' unless addresses.count == 1}: #{addresses * ', '})" } return addresses end end
dns_resolver_options()
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 56 def dns_resolver_options if nameserver_address { :nameserver_port => [nameserver] } else # Resolv::DNS.new expects the options argument to be *nil* when the # system nameservers are meant to be used [Nathan Ladd, Mon 2 Jan 2017] nil end end
nameserver()
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 66 def nameserver [nameserver_address, nameserver_port] end
nameserver_port()
click to toggle source
# File lib/dns/resolve_host/resolve_host.rb, line 70 def nameserver_port @nameserver_port ||= Defaults.port end