Sha256: 98d5c97bceabf0babf334f0ff5c84beb7129d439cc540c33db69b6872b3a2edf
Contents?: true
Size: 1.46 KB
Versions: 3
Compression:
Stored size: 1.46 KB
Contents
module Lens class Trace def initialize(id) @id = id @data = [] @gc_statistics = Lens::GC.new @gc_statistics.enable @allocations_data = Lens::AllocationsData.new @allocations_data.enable end def add(event) @data.push event.payload.merge( etype: event.name, eduration: event.duration, estart: event.time.to_f, efinish: event.end.to_f ) end def complete(event) formatter = Lens::EventFormatter.new( event, @data, @gc_statistics.total_time, @allocations_data ) formatted_data = formatter.json_formatted send(formatted_data) Thread.current[:__lens_trace] = nil end private def send(data) Worker.instance.push(data) end end class << Trace def process(event) create(event.transaction_id) if first_event?(event) if Trace.present? current.add(event) current.complete(event) if last_event?(event) end end def present? current.present? end private def first_event?(event) event.name == 'start_processing.action_controller' end def last_event?(event) event.name == 'process_action.action_controller' && event.payload[:controller] && event.payload[:action] end def current Thread.current[:__lens_trace] end def create(id) Thread.current[:__lens_trace] = new(id) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
lens-0.0.8.2 | lib/lens/trace.rb |
lens-0.0.8 | lib/lens/trace.rb |
lens-0.0.7 | lib/lens/trace.rb |