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