Class: Elastomer::Client::Error

Inherits:
Error
  • Object
show all
Defined in:
lib/elastomer/client/errors.rb

Overview

General error response from client requests.

Class Attribute Summary collapse

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Error

Construct a new Error from the given response object or a message String. If a response object is given, the error message will be extracted from the response body.

response - Faraday::Response object or a simple error message String



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/elastomer/client/errors.rb', line 18

def initialize( *args )
  @status = nil
  @error = nil

  case args.first
  when Exception
    exception = args.shift
    super("#{exception.message} :: #{args.join(' ')}")
    set_backtrace exception.backtrace

  when Faraday::Response
    response = args.shift
    @status = response.status

    body = response.body
    @error = body["error"] if body.is_a?(Hash) && body.key?("error")

    message = @error || body.to_s
    super message

  else
    super args.join(" ")
  end
end

Class Attribute Details

.fatalObject Also known as: fatal?

By default all client errors are fatal and indicate that a request should not be retried. Only a few errors are retryable.



66
67
68
69
# File 'lib/elastomer/client/errors.rb', line 66

def fatal
  return @fatal if defined? @fatal
  @fatal = true
end

Instance Attribute Details

#errorObject (readonly)

Returns the Elasticsearch error from the ‘response` or nil if the Error was not created with a response.



49
50
51
# File 'lib/elastomer/client/errors.rb', line 49

def error
  @error
end

#statusObject (readonly)

Returns the status code from the ‘response` or nil if the Error was not created with a response.



45
46
47
# File 'lib/elastomer/client/errors.rb', line 45

def status
  @status
end

Instance Method Details

#fatal?Boolean

Indicates that the error is fatal. The request should not be tried again.

Returns:

  • (Boolean)


53
54
55
# File 'lib/elastomer/client/errors.rb', line 53

def fatal?
  self.class.fatal?
end

#retry?Boolean

The inverse of the ‘fatal?` method. A request can be retried if this method returns `true`.

Returns:

  • (Boolean)


59
60
61
# File 'lib/elastomer/client/errors.rb', line 59

def retry?
  !fatal?
end