Class: Gitlab::Faraday::ErrorCallback

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/gitlab/faraday/error_callback.rb

Overview

Simple Faraday Middleware that catches any error risen during the request and run the configured callback. (lostisland.github.io/faraday/middleware/)

By default, a no op callback is setup.

Note that the error is not swallowed: it will be rerisen again. In that regard, this callback acts more like an error spy than anything else.

The callback has access to the request env and the exception instance. For more details, see lostisland.github.io/faraday/middleware/custom

Faraday.new do |conn|

conn.request(
  :error_callback,
  callback: -> (env, exception) { Rails.logger.debug("Error #{exception.class.name} when trying to contact #{env[:url]}" ) }
)
conn.adapter(:net_http)

end

Defined Under Namespace

Classes: Options

Instance Method Summary collapse

Constructor Details

#initialize(app, options = nil) ⇒ ErrorCallback

Returns a new instance of ErrorCallback.



24
25
26
27
# File 'lib/gitlab/faraday/error_callback.rb', line 24

def initialize(app, options = nil)
  super(app)
  @options = ::Gitlab::Faraday::ErrorCallback::Options.from(options) # rubocop: disable CodeReuse/ActiveRecord
end

Instance Method Details

#call(env) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/gitlab/faraday/error_callback.rb', line 29

def call(env)
  @app.call(env)
rescue StandardError => e
  @options.callback&.call(env, e)

  raise
end