Module: Farce::Resolv

Defined in:
lib/farce/resolv.rb,
lib/farce/resolv/dns.rb

Overview

Small module wrapping Ruby's resolver in a way that permits it to be used outside of the main ractor. Just replace calls to Resolv with Farce::Resolv.

Defined Under Namespace

Classes: DNS

Constant Summary collapse

Hosts =
::Resolv::Hosts
VERSION =
::Resolv::VERSION

Class Method Summary collapse

Class Method Details

.each_address(name) {|address| ... } ⇒ BasicObject

Resolves a hostname to its corresponding IP addresses one by one.

Parameters:

  • name (String) —

    the name to resolve

Yields:

  • (address) —

    each name corresponding to the given address

Yield Parameters:

  • address (String) —

    the resolved address



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.each_name(address) {|name| ... } ⇒ BasicObject

Resolves an IP address to its corresponding host names one by one.

Parameters:

  • address (String) —

    the address to resolve

Yields:

  • (name) —

    each name corresponding to the given address

Yield Parameters:

  • name (String) —

    the resolved name



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.getaddress(name) ⇒ String

Resolves a hostname to its corresponding IP address.

Parameters:

  • name (String) —

    the name to resolve

Returns:

  • (String) —

    the resolved address



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.getaddresses(name) ⇒ Array<String>

Resolves a hostname to its corresponding IP addresses.

Parameters:

  • name (String) —

    the name to resolve

Returns:

  • (Array<String>) —

    the resolved addresses



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.getname(address) ⇒ String

Resolves an IP address to its corresponding host name.

Parameters:

  • address (String) —

    the address to resolve

Returns:

  • (String) —

    the resolved name



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.getnames(address) ⇒ Array<String>

Resolves an IP address to its corresponding host names.

Parameters:

  • address (String) —

    the address to resolve

Returns:

  • (Array<String>) —

    the resolved names



82
83
# File 'lib/farce/resolv.rb', line 82

Internal.delegate(singleton_class, :resolver, :getaddress, :getaddresses, :each_address, :getname, :getnames,
:each_name)

.new(resolvers = nil, **config) ⇒ ::Resolv

Returns a new resolver instance.

Returns:

  • (::Resolv) —

    a new resolver instance



41
42
43
44
45
46
47
48
# File 'lib/farce/resolv.rb', line 41

def self.new(resolvers = nil, **config)
  if resolvers.nil? || resolvers.is_a?(Hash)
    defaults = DEFAULT_CONFIG || DNS::Config.default_config_hash
    config = defaults.merge(resolvers || config)
    resolvers = [Hosts.new(DEFAULT_HOSTS), DNS.new(config)]
  end
  ::Resolv.new(resolvers)
end

.resolver ⇒ ::Resolv

Returns the resolver instance for the current ractor.

Returns:

  • (::Resolv) —

    the resolver instance for the current ractor



38
# File 'lib/farce/resolv.rb', line 38

def self.resolver = Internal::Storage.store_if_absent(self) { new }