Module: RailsTracepointStack::Renderer::Summary

Defined in:
lib/rails_tracepoint_stack/renderer/summary.rb

Overview

Counts what a session holds, so a reader can tell at a glance whether the capture saw what they expected before reading the tree itself.

Class Method Summary collapse

Class Method Details

.call(session) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/rails_tracepoint_stack/renderer/summary.rb', line 6

def self.call(session)
  {
    calls: count(session, :call),
    returns: count(session, :return),
    raises: count(session, :raise),
    classes: session.traces.map(&:class_name).uniq.size,
    filtered: session.filtered_count,
    truncated: session.truncated?
  }
end

.count(session, kind) ⇒ Object



28
29
30
# File 'lib/rails_tracepoint_stack/renderer/summary.rb', line 28

def self.count(session, kind)
  session.traces.count { |record| record.kind == kind }
end

.line(session) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/rails_tracepoint_stack/renderer/summary.rb', line 17

def self.line(session)
  counts = call(session)

  [
    pluralize(counts[:calls], "call"),
    pluralize(counts[:returns], "return"),
    pluralize(counts[:raises], "raise"),
    pluralize(counts[:classes], "class", "classes")
  ].join(", ")
end

.pluralize(count, singular, plural = "#{singular}s") ⇒ Object



32
33
34
# File 'lib/rails_tracepoint_stack/renderer/summary.rb', line 32

def self.pluralize(count, singular, plural = "#{singular}s")
  "#{count} #{(count == 1) ? singular : plural}"
end