Class: Gem::Resolv::Hosts
- Inherits:
- 
      Object
      
        - Object
- Gem::Resolv::Hosts
 
- Defined in:
- lib/rubygems/vendor/resolv/lib/resolv.rb
Overview
Gem::Resolv::Hosts is a hostname resolver that uses the system hosts file.
Instance Method Summary collapse
- 
  
    
      #each_address(name, &proc)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Iterates over all IP addresses for nameretrieved from the hosts file.
- 
  
    
      #each_name(address, &proc)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Iterates over all hostnames for addressretrieved from the hosts file.
- 
  
    
      #getaddress(name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Gets the IP address of namefrom the hosts file.
- 
  
    
      #getaddresses(name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Gets all IP addresses for namefrom the hosts file.
- 
  
    
      #getname(address)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Gets the hostname of addressfrom the hosts file.
- 
  
    
      #getnames(address)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Gets all hostnames for addressfrom the hosts file.
- 
  
    
      #initialize(filename = DefaultFileName)  ⇒ Hosts 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    Creates a new Gem::Resolv::Hosts, using filenamefor its data source.
- 
  
    
      #lazy_initialize  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
Constructor Details
#initialize(filename = DefaultFileName) ⇒ Hosts
Creates a new Gem::Resolv::Hosts, using filename for its data source.
| 192 193 194 195 196 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 192 def initialize(filename = DefaultFileName) @filename = filename @mutex = Thread::Mutex.new @initialized = nil end | 
Instance Method Details
#each_address(name, &proc) ⇒ Object
Iterates over all IP addresses for name retrieved from the hosts file.
| 239 240 241 242 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 239 def each_address(name, &proc) lazy_initialize @name2addr[name]&.each(&proc) end | 
#each_name(address, &proc) ⇒ Object
Iterates over all hostnames for address retrieved from the hosts file.
| 264 265 266 267 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 264 def each_name(address, &proc) lazy_initialize @addr2name[address]&.each(&proc) end | 
#getaddress(name) ⇒ Object
Gets the IP address of name from the hosts file.
| 222 223 224 225 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 222 def getaddress(name) each_address(name) {|address| return address} raise ResolvError.new("#{@filename} has no name: #{name}") end | 
#getaddresses(name) ⇒ Object
Gets all IP addresses for name from the hosts file.
| 230 231 232 233 234 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 230 def getaddresses(name) ret = [] each_address(name) {|address| ret << address} return ret end | 
#getname(address) ⇒ Object
Gets the hostname of address from the hosts file.
| 247 248 249 250 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 247 def getname(address) each_name(address) {|name| return name} raise ResolvError.new("#{@filename} has no address: #{address}") end | 
#getnames(address) ⇒ Object
Gets all hostnames for address from the hosts file.
| 255 256 257 258 259 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 255 def getnames(address) ret = [] each_name(address) {|name| ret << name} return ret end | 
#lazy_initialize ⇒ Object
:nodoc:
| 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | # File 'lib/rubygems/vendor/resolv/lib/resolv.rb', line 198 def lazy_initialize # :nodoc: @mutex.synchronize { unless @initialized @name2addr = {} @addr2name = {} File.open(@filename, 'rb') {|f| f.each {|line| line.sub!(/#.*/, '') addr, *hostnames = line.split(/\s+/) next unless addr (@addr2name[addr] ||= []).concat(hostnames) hostnames.each {|hostname| (@name2addr[hostname] ||= []) << addr} } } @name2addr.each {|name, arr| arr.reverse!} @initialized = true end } self end |