Module: SkillBench::ErrorLogger

Defined in:
lib/skill_bench/error_logger.rb

Overview

Shared error logging mixin for service objects. Logs error message and backtrace to Rails.logger or stderr.

Class Method Summary collapse

Class Method Details

.log_error(error, prefix = nil) ⇒ void

This method returns an undefined value.

Logs an error with message and backtrace.

Parameters:

  • error (StandardError)

    The exception to log

  • prefix (String) (defaults to: nil)

    Optional prefix for the log message



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/skill_bench/error_logger.rb', line 12

def log_error(error, prefix = nil)
  message = prefix ? "#{prefix}: #{error.message}" : error.message
  backtrace = error.backtrace&.first(5)&.join("\n") || '(no backtrace)'

  return if skip_stderr_output?

  if defined?(Rails) && Rails.respond_to?(:logger) && Rails.logger
    Rails.logger.error(message)
    Rails.logger.error(backtrace)
  else
    warn(message)
    warn(backtrace)
  end
end

.skip_stderr_output?Boolean

Returns true when stderr should be skipped (test mode without explicit capture).

Returns:

  • (Boolean)

    true when stderr should be skipped (test mode without explicit capture).



28
29
30
# File 'lib/skill_bench/error_logger.rb', line 28

def skip_stderr_output?
  defined?(Minitest) && !$stderr.is_a?(StringIO)
end