Module: GraphitiErrors

Defined in:
lib/graphiti_errors.rb,
lib/graphiti_errors/version.rb,
lib/graphiti_errors/exception_handler.rb,
lib/graphiti_errors/validation/serializer.rb,
lib/graphiti_errors/invalid_request/serializer.rb,
lib/graphiti_errors/invalid_request/exception_handler.rb

Defined Under Namespace

Modules: ClassMethods, InvalidRequest, Serializers, Validation Classes: ExceptionHandler

Constant Summary collapse

VERSION =
"1.1.1"

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.disable!Object



29
30
31
# File 'lib/graphiti_errors.rb', line 29

def self.disable!
  @enabled = false
end

.disabled?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/graphiti_errors.rb', line 37

def self.disabled?
  @enabled == false
end

.enable!Object



33
34
35
# File 'lib/graphiti_errors.rb', line 33

def self.enable!
  @enabled = true
end

.included(klass) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/graphiti_errors.rb', line 10

def self.included(klass)
  klass.class_eval do
    class << self
      attr_accessor :_errorable_registry
    end

    def self.inherited(subklass)
      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
end

.loggerObject



41
42
43
# File 'lib/graphiti_errors.rb', line 41

def self.logger
  @logger ||= defined?(Rails) ? Rails.logger : Logger.new($stdout)
end

.logger=(logger) ⇒ Object



45
46
47
# File 'lib/graphiti_errors.rb', line 45

def self.logger=(logger)
  @logger = logger
end

Instance Method Details

#default_exception_handlerObject



61
62
63
# File 'lib/graphiti_errors.rb', line 61

def default_exception_handler
  self.class.default_exception_handler
end

#handle_exception(e, show_raw_error: false) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/graphiti_errors.rb', line 49

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) ⇒ Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/graphiti_errors.rb', line 65

def registered_exception?(e)
  self.class._errorable_registry.key?(e.class)
end