class Springcm::Middleware::RetryConnectionFailed

Attributes

options[R]

Public Class Methods

new(app, options={ retries: 5 }) click to toggle source
# File lib/springcm-sdk/middleware/retry_connection_failed.rb, line 6
def initialize(app, options={ retries: 5 })
  @app = app
  @options = options
end

Public Instance Methods

call(env) click to toggle source
# File lib/springcm-sdk/middleware/retry_connection_failed.rb, line 11
def call(env)
  retries = @options[:retries]
  delay = 1
  begin
    @app.call(env).on_complete do |response_env|
    end
  rescue Faraday::ConnectionFailed => err
    if retries > 0
      retries -= 1
      sleep delay
      delay *= 2
      retry
    else
      raise err
    end
  end
end