Class: Grape::Middleware::Error

Inherits:
Base
  • Object
show all
Defined in:
lib/grape/idempotency/middleware/error.rb

Instance Method Summary collapse

Instance Method Details

#run_rescue_handler(handler, error) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/grape/idempotency/middleware/error.rb', line 6

def run_rescue_handler(handler, error)
  if handler.instance_of?(Symbol)
    raise NoMethodError, "undefined method '#{handler}'" unless respond_to?(handler)

    handler = public_method(handler)
  end

  response = handler.arity.zero? ? instance_exec(&handler) : instance_exec(error, &handler)

  if response.is_a?(Rack::Response)
    update_idempotency_error_with(error, response)
    response
  else
    run_rescue_handler(:default_rescue_handler, Grape::Exceptions::InvalidResponse.new)
  end
end