| 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
Iterates over all IP addresses for name.
# 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.
# 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.
# File lib/resolv.rb, line 42
42: def self.getaddress(name)
43: DefaultResolver.getaddress(name)
44: end
Looks up all IP address for name.
# File lib/resolv.rb, line 49
49: def self.getaddresses(name)
50: DefaultResolver.getaddresses(name)
51: end
Looks up the hostname of address.
# File lib/resolv.rb, line 63
63: def self.getname(address)
64: DefaultResolver.getname(address)
65: end
Looks up all hostnames for address.
# File lib/resolv.rb, line 70
70: def self.getnames(address)
71: DefaultResolver.getnames(address)
72: end
Iterates over all IP addresses for name.
# 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.
# 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.
# 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.
# 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.
# 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