Module: DebugMcp::EventFormatter
- Defined in:
- lib/debug_mcp/event_formatter.rb
Constant Summary collapse
- DEFAULT_LIMITS =
{ sql: 30, render: 20, cache: 20, job: nil, # nil = no limit logger: 50, }.freeze
- MAX_SQL_CHARS =
500- SQL_HEAD =
300- SQL_TAIL =
100- MAX_CACHE_KEY_CHARS =
200- MAX_JOB_ARG_CHARS =
300
Class Method Summary collapse
-
.format(events, limits: DEFAULT_LIMITS, include_debug_eval: false) ⇒ Object
Format an array of event hashes (as returned by NotificationsSubscriber.fetch_*) into a Markdown-flavored structured text block.
Class Method Details
.format(events, limits: DEFAULT_LIMITS, include_debug_eval: false) ⇒ Object
Format an array of event hashes (as returned by NotificationsSubscriber.fetch_*) into a Markdown-flavored structured text block. Returns nil if events is empty (after filtering).
By default, events with source: :debug_eval are excluded — these are AR queries / renders / etc. fired by debug-mcp’s own evaluate_code calls during breakpoint inspection (ADR-0003). Pass include_debug_eval: true to keep them.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/debug_mcp/event_formatter.rb', line 28 def format(events, limits: DEFAULT_LIMITS, include_debug_eval: false) return nil if events.nil? || events.empty? filtered = include_debug_eval ? events : events.reject { |e| e[:source].to_s == "debug_eval" } return nil if filtered.empty? grouped = group_events(filtered) sections = [] sections << format_controller(grouped[:controller]) sections << format_sql(grouped[:sql], limit: limits[:sql]) sections << format_renders(grouped[:render], limit: limits[:render]) sections << format_cache(grouped[:cache], limit: limits[:cache]) sections << format_jobs(grouped[:job], limit: limits[:job]) sections.compact.join("\n\n") end |