module Kraftwerk::Endpoint::ErrorHandling
Public Class Methods
prepended(base)
click to toggle source
# File lib/kraftwerk/endpoint/error_handling.rb, line 22 def self.prepended(base) base.class_eval do class_attribute :exception_handlers self.exception_handlers = {} extend ClassMethods end end
Public Instance Methods
call(params)
click to toggle source
Calls superclass method
# File lib/kraftwerk/endpoint/error_handling.rb, line 4 def call(params) begin super rescue => exception if self.class.exception_handlers.key?(exception.class) handler = self.class.exception_handlers[exception.class] message = handler[:message].respond_to?(:call) ? handler[:message].call(exception) : handler[:message] unless message.is_a?(Kraftwerk::Response) message = Kraftwerk::Response.new(code: handler[:code], body: { error: message }) end message # todo call app expection handler somehow else raise exception end end end