Module: Julewire::Core::Diagnostics::InvalidSeverityReporter

Defined in:
lib/julewire/core/diagnostics/invalid_severity_reporter.rb

Class Method Summary collapse

Class Method Details

.call(value, source: nil, event: nil) ⇒ Object



58
59
60
61
62
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 58

def call(value, source: nil, event: nil)
  warning_only.call(value, source: source, event: event)
rescue StandardError
  nil
end

.counterObject



64
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 64

def counter = RuntimeCounter.new

.metadata(value, source:, event:) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 84

def (value, source:, event:)
  {
    event: event,
    source: source,
    value_class: value.class.name || value.class.to_s
  }.compact.freeze
rescue StandardError
  { value_class: "unknown" }.freeze
end

.reset!Object



73
74
75
76
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 73

def reset!
  @mutex.synchronize { @warned = false }
  nil
end

.reset_after_fork!Object



78
79
80
81
82
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 78

def reset_after_fork!
  @mutex = Mutex.new
  @warned = false
  nil
end

.warn_once(metadata) ⇒ Object



66
67
68
69
70
71
# File 'lib/julewire/core/diagnostics/invalid_severity_reporter.rb', line 66

def warn_once()
  return unless first_warning?

  # Bypass Ruby's verbosity gates; this warning is emitted once.
  Warning.warn("julewire: unsupported record severity #{.fetch(:value_class)}; using :info\n")
end