class AutomateIt::AddressManager::Portable

AddressManager::Portable

A pure-Ruby, portable driver for the AddressManager which provides minimal support for querying the hostname using sockets. Although it lacks advanced features found in other drivers, it will work on all platforms.

Public Instance Methods

addresses() click to toggle source

See AddressManager#addresses

# File lib/automateit/address_manager/portable.rb, line 32
def addresses
  results = Set.new("127.0.0.1")
  results.merge(TCPSocket.gethostbyname(Socket.gethostname)[3]) rescue SocketError
  return results.flatten
end
has?(opts) click to toggle source

See AddressManager#has?

# File lib/automateit/address_manager/portable.rb, line 13
def has?(opts)
  raise NotImplementedError.new("this driver doesn't support queries for devices or labels") if opts[:device] or opts[:label]
  result = true
  result &= addresses.include?(opts[:address]) if opts[:address]
  return result
end
hostnames() click to toggle source

See AddressManager#hostnames

# File lib/automateit/address_manager/portable.rb, line 21
def hostnames
  results = Set.new
  results << Socket.gethostname
  results.merge(Socket.gethostbyname(Socket.gethostname)[1]) rescue SocketError

  results.each{|name| results.merge(hostnames_for(name))}
  results << "localhost"
  return results.to_a.sort
end