Class: Yes::Core::Utils::ErrorNotifier

Inherits:
Object
  • Object
show all
Defined in:
lib/yes/core/utils/error_notifier.rb

Overview

Notifies about errors via a pluggable error reporter.

By default, errors are logged via Rails.logger. To integrate with an external error tracking service (e.g. Sentry), configure the error reporter:

Yes::Core.configure do |config|
  config.error_reporter = ->(error, context:) { Sentry.capture_exception(error, extra: context) }
end

The error_reporter must respond to #call(error, context:).

Instance Method Summary collapse

Instance Method Details

#decryption_error(error) ⇒ void

This method returns an undefined value.

Parameters:



50
51
52
53
# File 'lib/yes/core/utils/error_notifier.rb', line 50

def decryption_error(error)
  logger&.info("#{error.message} data: #{error.extra}")
  capture_message(error.message, extra: error.extra)
end

#decryption_key_error(error) ⇒ void

This method returns an undefined value.

Parameters:



38
39
40
41
42
43
44
45
46
# File 'lib/yes/core/utils/error_notifier.rb', line 38

def decryption_key_error(error)
  data = {
    encryptor_response: error.encryptor_response,
    event: error.event
  }

  logger&.info("#{error.message} data: #{data}")
  capture_message(error.message, extra: data)
end

#event_handler_not_defined(message, event) ⇒ void

This method returns an undefined value.

Parameters:

  • message (String)
  • event (PgEventstore::Event)


58
59
60
61
62
63
# File 'lib/yes/core/utils/error_notifier.rb', line 58

def event_handler_not_defined(message, event)
  data = { event: event.to_json }

  logger&.info("#{message} data: #{data}")
  capture_message(message, extra: data) if ENV['CAPTURE_EVENTSOURCING_ERRORS'] == 'true'
end

#invalid_event_data(event) ⇒ void

This method returns an undefined value.

Parameters:

  • event (PgEventstore::Event)


19
20
21
22
23
24
25
# File 'lib/yes/core/utils/error_notifier.rb', line 19

def invalid_event_data(event)
  msg = 'Event with invalid data found in stream'
  data = { event: event.to_json }

  logger&.info("#{msg} data: #{data}")
  capture_message(msg, extra: data)
end

#missing_payload_store_client_errorvoid

This method returns an undefined value.



66
67
68
69
70
71
# File 'lib/yes/core/utils/error_notifier.rb', line 66

def missing_payload_store_client_error
  msg = 'Missing PayloadStore Client. Please configure it.'

  logger&.info(msg)
  capture_message(msg)
end

#notify(error, extra: nil) ⇒ void

This method returns an undefined value.

Parameters:

  • error (Exception)
  • extra (Hash, nil) (defaults to: nil)


76
77
78
# File 'lib/yes/core/utils/error_notifier.rb', line 76

def notify(error, extra: nil)
  error_reporter&.call(error, context: extra || {})
end

#payload_extraction_failed(error) ⇒ void

This method returns an undefined value.

Parameters:



29
30
31
32
33
34
# File 'lib/yes/core/utils/error_notifier.rb', line 29

def payload_extraction_failed(error)
  msg = 'Large payload extraction failed'

  logger&.info("#{msg} data: #{error.extra}")
  capture_message(msg, extra: error.extra)
end