Class: RailsTracepointStack::Sink::Collector

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_tracepoint_stack/sink/collector.rb

Overview

Turns live traces into immutable records held in memory, so a caller can inspect them once the traced block is done.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(session: RailsTracepointStack::TraceSession.new, limits: RailsTracepointStack::Limits.new) ⇒ Collector

Returns a new instance of Collector.



14
15
16
17
# File 'lib/rails_tracepoint_stack/sink/collector.rb', line 14

def initialize(session: RailsTracepointStack::TraceSession.new, limits: RailsTracepointStack::Limits.new)
  @session = session
  @limits = limits
end

Instance Attribute Details

#limitsObject (readonly)

Returns the value of attribute limits.



12
13
14
# File 'lib/rails_tracepoint_stack/sink/collector.rb', line 12

def limits
  @limits
end

#sessionObject (readonly)

Returns the value of attribute session.



12
13
14
# File 'lib/rails_tracepoint_stack/sink/collector.rb', line 12

def session
  @session
end

Instance Method Details

#record(trace) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/rails_tracepoint_stack/sink/collector.rb', line 19

def record(trace)
  return if limits.too_deep?(trace.depth)

  unless limits.room_for?(session.traces.size)
    session.truncated = true
    return
  end

  session.add(build_record(trace))
end