Class: Gruf::Sentry::ServerInterceptor

Inherits:
Interceptors::ServerInterceptor
  • Object
show all
Includes:
ErrorParser
Defined in:
lib/gruf/sentry/server_interceptor.rb

Overview

Intercepts inbound calls to provide Sentry error reporting

Instance Method Summary collapse

Methods included from ErrorParser

#code_for, #error?, #error_classes

Instance Method Details

#call(&_block) ⇒ Object

Handle the gruf around hook and capture errors



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/gruf/sentry/server_interceptor.rb', line 29

def call(&_block)
  return yield if Gruf::Sentry.ignore_methods.include?(request.method_name)

  begin
    yield
  rescue StandardError, GRPC::BadStatus => e
    if error?(e) # only capture
      ::Sentry.capture_exception(
        e,
        message: e.message,
        extra: {
          grpc_method: request.method_key,
          grpc_request_class: request.request_class,
          grpc_service_key: request.service_key,
          grpc_error_code: code_for(e),
          grpc_error_class: e.class
        }
      )
    end
    raise # passthrough
  end
end