Module: Ace::Search::Atoms::DebugLogger

Defined in:
lib/ace/search/atoms/debug_logger.rb

Overview

Centralized debug logging for ace-search

NOTE: This logger caches the ENV state on first use for performance and is intended for single-threaded, short-lived CLI processes.

Usage:

DebugLogger.log("message")
DebugLogger.section("Title") do
  DebugLogger.log("detail 1")
  DebugLogger.log("detail 2")
end

Class Method Summary collapse

Class Method Details

.enabled?Boolean

Check if debug logging is enabled via DEBUG environment variable

Returns:

  • (Boolean)

    true if DEBUG is set to “1” or “true”



21
22
23
24
25
26
# File 'lib/ace/search/atoms/debug_logger.rb', line 21

def self.enabled?
  @enabled ||= begin
    debug_value = ENV["DEBUG"]
    debug_value == "1" || debug_value == "true"
  end
end

.log(message, prefix: "DEBUG") ⇒ void

This method returns an undefined value.

Log a debug message to stderr if debugging is enabled

Parameters:

  • message (String)

    Message to log

  • prefix (String) (defaults to: "DEBUG")

    Prefix for the message (default: “DEBUG”)



33
34
35
36
# File 'lib/ace/search/atoms/debug_logger.rb', line 33

def self.log(message, prefix: "DEBUG")
  return unless enabled?
  warn "#{prefix}: #{message}"
end

.reset!void

This method returns an undefined value.

Reset the enabled cache (useful for testing)



55
56
57
# File 'lib/ace/search/atoms/debug_logger.rb', line 55

def self.reset!
  @enabled = nil
end

.section(title) { ... } ⇒ void

This method returns an undefined value.

Log a section with title and optional block for grouped output

Parameters:

  • title (String)

    Section title

Yields:

  • Optional block to execute within the section



43
44
45
46
47
48
49
50
# File 'lib/ace/search/atoms/debug_logger.rb', line 43

def self.section(title)
  return unless enabled?

  warn "=" * 60
  warn "DEBUG: #{title}"
  yield if block_given?
  warn "=" * 60
end