Module: ActiveJob::Temporal::Observability::PrometheusErrorLabels

Defined in:
lib/activejob/temporal/observability/prometheus.rb

Constant Summary collapse

LABEL_CLASSES =
[
  ActiveJob::DeserializationError,
  ActiveJob::SerializationError,
  NoMethodError,
  NameError,
  ArgumentError,
  TypeError,
  LoadError,
  SystemCallError,
  IOError,
  RuntimeError,
  StandardError,
  ScriptError,
  Exception
].freeze

Class Method Summary collapse

Class Method Details

.error_class_for(error) ⇒ Object



45
46
47
48
49
50
# File 'lib/activejob/temporal/observability/prometheus.rb', line 45

def error_class_for(error)
  return error if error.is_a?(Class)
  return error.class if error.is_a?(Exception)

  LABEL_CLASSES.find { |klass| klass.name == error.to_s } || StandardError
end

.for(error) ⇒ Object



38
39
40
41
42
43
# File 'lib/activejob/temporal/observability/prometheus.rb', line 38

def for(error)
  error_class = error_class_for(error)
  label_class = LABEL_CLASSES.find { |klass| error_class <= klass }

  (label_class&.name || "Unknown").to_s
end