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