class Synapse::Rails::Consul

Attributes

datacenter[RW]

Public Class Methods

discover(service) click to toggle source
# File lib/synapse/rails/consul.rb, line 15
def discover service
  resolv hostnames for:service
end
host_resolver() click to toggle source
# File lib/synapse/rails/consul.rb, line 41
def host_resolver
  @host_resolver         ||= Resolv::DNS.new
end
hostnames(params={}) click to toggle source
# File lib/synapse/rails/consul.rb, line 8
def hostnames params={}
  return unless params[:for]
  [
    ("#{params[:for]}.service.#{datacenter}.consul" if datacenter),
    "#{params[:for]}.service.consul."
  ].compact
end
local_consul_resolver() click to toggle source
# File lib/synapse/rails/consul.rb, line 44
def local_consul_resolver
  @local_consul_resolver ||= Resolv::DNS.new(nameserver_port:[['127.0.0.1',8600]])
end
resolv(hostnames) click to toggle source
# File lib/synapse/rails/consul.rb, line 18
def resolv hostnames
  @resolvers ||= Set.new
  hostnames.collect do |hostname|
    if @resolvers.empty?
      resolv_and_check_resolver_with hostname
    else
      use_resolvers hostname
    end
  end.flatten
end
resolv_and_check_resolver_with(hostname) click to toggle source
# File lib/synapse/rails/consul.rb, line 33
def resolv_and_check_resolver_with hostname
  [host_resolver,local_consul_resolver].each do |resolver|
    addresses = resolver.getaddresses hostname
    next if addresses.empty?
    @resolvers << resolver
    return addresses
  end
end
use_resolvers(hostname) click to toggle source
# File lib/synapse/rails/consul.rb, line 28
def use_resolvers hostname
  @resolvers.collect do |resolver|
    resolver.getaddresses hostname
  end
end