class Gruf::Sentry::ClientInterceptor

Intercepts outbound calls to provide Sentry reporting

Public Instance Methods

call(request_context:) { || ... } click to toggle source

@param [Gruf::Outbound::RequestContext]

# File lib/gruf/sentry/client_interceptor.rb, line 29
def call(request_context:)
  return yield if Gruf::Sentry.ignore_methods.include?(request_context.method_name)

  begin
    yield
  rescue StandardError, GRPC::BadStatus => e
    if error?(e) # only capture
      ::Sentry.capture_exception(
        e,
        message: e.message,
        extra: {
          grpc_method_name: request_context.method_name,
          grpc_route_key: request_context.route_key,
          grpc_call_type: request_context.type,
          grpc_error_code: code_for(e),
          grpc_error_class: e.class
        }
      )
    end
    raise # passthrough
  end
end