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