class FTW::DNS
I wrap whatever Ruby provides because it is historically very inconsistent in implementation behavior across ruby platforms and versions. In the future, this will probably implement the DNS
protocol, but for now chill in the awkward, but already-written, ruby stdlib.
I didn't really want to write a DNS
library, but a consistent API and behavior is necessary for my continued sanity :)
Constants
- V4_IN_V6_PREFIX
The ipv4-in-ipv6 address space prefix.
Attributes
An array of resolvers. By default this includes a FTW::DNS::DNS
instance.
Public Class Methods
A new resolver.
The default set of resolvers is only {FTW::DNS::DNS} which does DNS
resolution.
# File lib/ftw/dns.rb, line 28 def initialize @resolvers = [FTW::DNS::DNS.new] end
Public Instance Methods
Resolve a hostname.
Returns an array of all addresses for this host. Empty array resolution failure.
# File lib/ftw/dns.rb, line 36 def resolve(hostname) return @resolvers.reduce([]) do |memo, resolver| result = resolver.resolve(hostname) memo += result unless result.nil? end end
Resolve hostname and choose one of the results at random.
Use this method if you are connecting to a hostname that resolves to multiple addresses.
# File lib/ftw/dns.rb, line 47 def resolve_random(hostname) addresses = resolve(hostname) return addresses[rand(addresses.size)] end