Module: Kotoshu::Debug
- Defined in:
- lib/kotoshu/debug_mode.rb,
lib/kotoshu/debug_logger.rb
Overview
Debug mode for detailed spellchecking insights.
When enabled, debug mode provides:
-
Lookup timing information
-
Suggestion scoring details
-
Decision tree visualization
-
Cache hit/miss tracking
-
Performance metrics
Defined Under Namespace
Classes: Logger
Class Attribute Summary collapse
-
.logger ⇒ Debug::Logger?
readonly
Get the debug logger.
Class Method Summary collapse
-
.disable ⇒ Object
Disable debug mode.
-
.enable(output: $stderr, level: :info) ⇒ Object
Enable debug mode.
-
.enabled? ⇒ Boolean
Check if debug mode is enabled.
-
.log_cache(cache_type, key, hit:) ⇒ Object
Log a cache hit/miss.
-
.log_decision_tree(word, decisions:) ⇒ Object
Log a decision tree.
-
.log_lookup(word, result:, time:) ⇒ Object
Log a lookup operation.
-
.log_suggestions(word, suggestions:, time:) ⇒ Object
Log a suggestion generation.
-
.measure_lookup(word) { ... } ⇒ Object
Measure and log a lookup.
-
.measure_suggestions(word) { ... } ⇒ Object
Measure and log suggestions.
-
.time(label) { ... } ⇒ Object
Start a timing context.
Class Attribute Details
.logger ⇒ Debug::Logger? (readonly)
Get the debug logger.
49 50 51 |
# File 'lib/kotoshu/debug_mode.rb', line 49 def logger @logger end |
Class Method Details
.disable ⇒ Object
Disable debug mode.
34 35 36 37 |
# File 'lib/kotoshu/debug_mode.rb', line 34 def disable @enabled = false @logger = nil end |
.enable(output: $stderr, level: :info) ⇒ Object
Enable debug mode.
26 27 28 29 30 31 |
# File 'lib/kotoshu/debug_mode.rb', line 26 def enable(output: $stderr, level: :info) @enabled = true @output = output @level = level @logger = Debug::Logger.new(output: output, level: level) end |
.enabled? ⇒ Boolean
Check if debug mode is enabled.
42 43 44 |
# File 'lib/kotoshu/debug_mode.rb', line 42 def enabled? @enabled ||= false end |
.log_cache(cache_type, key, hit:) ⇒ Object
Log a cache hit/miss.
78 79 80 81 82 |
# File 'lib/kotoshu/debug_mode.rb', line 78 def log_cache(cache_type, key, hit:) return unless enabled? logger&.debug_cache(cache_type, key, hit: hit) end |
.log_decision_tree(word, decisions:) ⇒ Object
Log a decision tree.
88 89 90 91 92 |
# File 'lib/kotoshu/debug_mode.rb', line 88 def log_decision_tree(word, decisions:) return unless enabled? logger&.debug_decision_tree(word, decisions: decisions) end |
.log_lookup(word, result:, time:) ⇒ Object
Log a lookup operation.
56 57 58 59 60 |
# File 'lib/kotoshu/debug_mode.rb', line 56 def log_lookup(word, result:, time:) return unless enabled? logger&.debug_lookup(word, result: result, time: time) end |
.log_suggestions(word, suggestions:, time:) ⇒ Object
Log a suggestion generation.
67 68 69 70 71 |
# File 'lib/kotoshu/debug_mode.rb', line 67 def log_suggestions(word, suggestions:, time:) return unless enabled? logger&.debug_suggestions(word, suggestions: suggestions, time: time) end |
.measure_lookup(word) { ... } ⇒ Object
Measure and log a lookup.
111 112 113 114 115 116 117 118 |
# File 'lib/kotoshu/debug_mode.rb', line 111 def measure_lookup(word) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) result = yield elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start) * 1000 log_lookup(word, result: result, time: elapsed) result end |
.measure_suggestions(word) { ... } ⇒ Object
Measure and log suggestions.
124 125 126 127 128 129 130 131 |
# File 'lib/kotoshu/debug_mode.rb', line 124 def measure_suggestions(word) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) result = yield elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start) * 1000 log_suggestions(word, suggestions: result, time: elapsed) result end |
.time(label) { ... } ⇒ Object
Start a timing context.
98 99 100 101 102 103 104 105 |
# File 'lib/kotoshu/debug_mode.rb', line 98 def time(label) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) result = yield elapsed = (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start) * 1000 logger&.info("#{label}: #{elapsed.round(3)}ms") result end |