module GraphitiErrors

Constants

VERSION

Attributes

_errorable_registry[RW]

Public Class Methods

disable!() click to toggle source
# File lib/graphiti_errors.rb, line 37
def self.disable!
  @enabled = false
end
disabled?() click to toggle source
# File lib/graphiti_errors.rb, line 45
def self.disabled?
  @enabled == false
end
enable!() click to toggle source
# File lib/graphiti_errors.rb, line 41
def self.enable!
  @enabled = true
end
included(klass) click to toggle source
# File lib/graphiti_errors.rb, line 12
def self.included(klass)
  klass.class_eval do
    class << self
      attr_accessor :_errorable_registry
    end

    def self.inherited(subklass)
      super
      subklass._errorable_registry = _errorable_registry.dup
    end
  end
  klass._errorable_registry = {}
  klass.extend ClassMethods

  if defined?(Graphiti::Errors::InvalidRequest)
    klass.register_exception Graphiti::Errors::InvalidRequest,
      handler: GraphitiErrors::InvalidRequest::ExceptionHandler
  end

  if defined?(Graphiti::Errors::ConflictRequest)
    klass.register_exception Graphiti::Errors::ConflictRequest,
      handler: GraphitiErrors::ConflictRequest::ExceptionHandler
  end
end
inherited(subklass) click to toggle source
Calls superclass method
# File lib/graphiti_errors.rb, line 18
def self.inherited(subklass)
  super
  subklass._errorable_registry = _errorable_registry.dup
end
logger() click to toggle source
# File lib/graphiti_errors.rb, line 49
def self.logger
  @logger ||= defined?(Rails) ? Rails.logger : Logger.new($stdout)
end
logger=(logger) click to toggle source
# File lib/graphiti_errors.rb, line 53
def self.logger=(logger)
  @logger = logger
end

Public Instance Methods

default_exception_handler() click to toggle source
# File lib/graphiti_errors.rb, line 69
def default_exception_handler
  self.class.default_exception_handler
end
handle_exception(e, show_raw_error: false) click to toggle source
# File lib/graphiti_errors.rb, line 57
def handle_exception(e, show_raw_error: false)
  raise e if GraphitiErrors.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/graphiti_errors.rb, line 73
def registered_exception?(e)
  self.class._errorable_registry.key?(e.class)
end