module JsonapiErrorable
Constants
- VERSION
Attributes
_errorable_registry[RW]
Public Class Methods
disable!()
click to toggle source
# File lib/jsonapi_errorable.rb, line 24 def self.disable! @enabled = false end
disabled?()
click to toggle source
# File lib/jsonapi_errorable.rb, line 32 def self.disabled? @enabled == false end
enable!()
click to toggle source
# File lib/jsonapi_errorable.rb, line 28 def self.enable! @enabled = true end
included(klass)
click to toggle source
# File lib/jsonapi_errorable.rb, line 9 def self.included(klass) klass.class_eval do class << self attr_accessor :_errorable_registry end def self.inherited(subklass) subklass._errorable_registry = self._errorable_registry.dup end end klass._errorable_registry = {} klass.send(:include, Validatable) klass.extend ClassMethods end
inherited(subklass)
click to toggle source
# File lib/jsonapi_errorable.rb, line 15 def self.inherited(subklass) subklass._errorable_registry = self._errorable_registry.dup end
logger()
click to toggle source
# File lib/jsonapi_errorable.rb, line 36 def self.logger @logger ||= defined?(Rails) ? Rails.logger : Logger.new($stdout) end
logger=(logger)
click to toggle source
# File lib/jsonapi_errorable.rb, line 40 def self.logger=(logger) @logger = logger end
Public Instance Methods
default_exception_handler()
click to toggle source
# File lib/jsonapi_errorable.rb, line 55 def default_exception_handler self.class.default_exception_handler end
handle_exception(e, show_raw_error: false)
click to toggle source
# File lib/jsonapi_errorable.rb, line 44 def handle_exception(e, show_raw_error: false) raise e if JsonapiErrorable.disabled? exception_klass = self.class._errorable_registry[e.class] || default_exception_handler.new exception_klass.show_raw_error = show_raw_error exception_klass.log(e) json = exception_klass.error_payload(e) status = exception_klass.status_code(e) render json: json, status: status end
registered_exception?(e)
click to toggle source
# File lib/jsonapi_errorable.rb, line 59 def registered_exception?(e) self.class._errorable_registry.key?(e.class) end