Class Resolv
In: lib/resolv.rb
Parent: Object

Resolv is a thread-aware DNS resolver library written in Ruby. Resolv can handle multiple DNS requests concurrently without blocking. The ruby interpreter.

See also resolv-replace.rb to replace the libc resolver with # Resolv.

Resolv can look up various DNS resources using the DNS module directly.

Examples:

  p Resolv.getaddress "www.ruby-lang.org"
  p Resolv.getname "210.251.121.214"

  Resolv::DNS.open do |dns|
    ress = dns.getresources "www.ruby-lang.org", Resolv::DNS::Resource::IN::A
    p ress.map { |r| r.address }
    ress = dns.getresources "ruby-lang.org", Resolv::DNS::Resource::IN::MX
    p ress.map { |r| [r.exchange.to_s, r.preference] }
  end

Bugs

  • NIS is not supported.
  • /etc/nsswitch.conf is not supported.

Methods

Classes and Modules

Class Resolv::DNS
Class Resolv::Hosts
Class Resolv::IPv4
Class Resolv::IPv6
Class Resolv::ResolvError
Class Resolv::ResolvTimeout

Constants

DefaultResolver = self.new   Default resolver to use for Resolv class methods.
AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/   Address Regexp to use for matching IP addresses.

Public Class methods

Iterates over all IP addresses for name.

[Source]

    # File lib/resolv.rb, line 56
56:   def self.each_address(name, &block)
57:     DefaultResolver.each_address(name, &block)
58:   end

Iterates over all hostnames for address.

[Source]

    # File lib/resolv.rb, line 77
77:   def self.each_name(address, &proc)
78:     DefaultResolver.each_name(address, &proc)
79:   end

Looks up the first IP address for name.

[Source]

    # File lib/resolv.rb, line 42
42:   def self.getaddress(name)
43:     DefaultResolver.getaddress(name)
44:   end

Looks up all IP address for name.

[Source]

    # File lib/resolv.rb, line 49
49:   def self.getaddresses(name)
50:     DefaultResolver.getaddresses(name)
51:   end

Looks up the hostname of address.

[Source]

    # File lib/resolv.rb, line 63
63:   def self.getname(address)
64:     DefaultResolver.getname(address)
65:   end

Looks up all hostnames for address.

[Source]

    # File lib/resolv.rb, line 70
70:   def self.getnames(address)
71:     DefaultResolver.getnames(address)
72:   end

Creates a new Resolv using resolvers.

[Source]

    # File lib/resolv.rb, line 84
84:   def initialize(resolvers=[Hosts.new, DNS.new])
85:     @resolvers = resolvers
86:   end

Public Instance methods

Iterates over all IP addresses for name.

[Source]

     # File lib/resolv.rb, line 108
108:   def each_address(name)
109:     if AddressRegex =~ name
110:       yield name
111:       return
112:     end
113:     yielded = false
114:     @resolvers.each {|r|
115:       r.each_address(name) {|address|
116:         yield address.to_s
117:         yielded = true
118:       }
119:       return if yielded
120:     }
121:   end

Iterates over all hostnames for address.

[Source]

     # File lib/resolv.rb, line 143
143:   def each_name(address)
144:     yielded = false
145:     @resolvers.each {|r|
146:       r.each_name(address) {|name|
147:         yield name.to_s
148:         yielded = true
149:       }
150:       return if yielded
151:     }
152:   end

Looks up the first IP address for name.

[Source]

    # File lib/resolv.rb, line 91
91:   def getaddress(name)
92:     each_address(name) {|address| return address}
93:     raise ResolvError.new("no address for #{name}")
94:   end

Looks up all IP address for name.

[Source]

     # File lib/resolv.rb, line 99
 99:   def getaddresses(name)
100:     ret = []
101:     each_address(name) {|address| ret << address}
102:     return ret
103:   end

Looks up the hostname of address.

[Source]

     # File lib/resolv.rb, line 126
126:   def getname(address)
127:     each_name(address) {|name| return name}
128:     raise ResolvError.new("no name for #{address}")
129:   end

Looks up all hostnames for address.

[Source]

     # File lib/resolv.rb, line 134
134:   def getnames(address)
135:     ret = []
136:     each_name(address) {|name| ret << name}
137:     return ret
138:   end

[Validate]