class ConsulSyncer::Wrapper
Constants
- BACKOFF
Public Class Methods
new(consul_url, params:, logger:)
click to toggle source
# File lib/consul_syncer/wrapper.rb, line 14 def initialize(consul_url, params:, logger:) consul_url = "http://#{consul_url}" unless consul_url.include?("://") @consul = Faraday.new(consul_url) @params = params @logger = logger end
Public Instance Methods
request(method, path, payload = nil)
click to toggle source
# File lib/consul_syncer/wrapper.rb, line 21 def request(method, path, payload = nil) if @params.any? separator = (path.include?("?") ? "&" : "?") path += "#{separator}#{URI.encode_www_form(@params)}" end args = [path] args << payload.to_json if payload retry_on_error do response = @consul.send(method, *args) if response.status == 200 if method == :get JSON.parse(response.body) else true end else raise( ConsulError, "Failed to request #{response.env.method} #{response.env.url}: #{response.status} -- #{response.body}" ) end end end
Private Instance Methods
retry_on_error() { || ... }
click to toggle source
# File lib/consul_syncer/wrapper.rb, line 48 def retry_on_error yield rescue Faraday::Error, ConsulError retried ||= 0 backoff = BACKOFF[retried] raise unless backoff retried += 1 @logger.warn "Consul request failed, retrying in #{backoff}s" sleep backoff retry end