class RShade::Trace
Constants
- EVENTS
Attributes
event_store[RW]
filter[RW]
formatter[RW]
Public Class Methods
new(options={})
click to toggle source
# File lib/rshade/trace.rb, line 6 def initialize(options={}) @event_store = EventStore.new @formatter = options.fetch(:formatter, RShade.config.formatter) @filter = options.fetch(:filter, RShade.config.filter) @tp = TracePoint.new(*EVENTS, &method(:process_trace)) @level = 1 @stat = {} @calls = 0 @returns = 0 end
reveal(options={}, &block)
click to toggle source
# File lib/rshade/trace.rb, line 17 def self.reveal(options={}, &block) new(options).reveal(&block) end
Public Instance Methods
process_trace(tp)
click to toggle source
# File lib/rshade/trace.rb, line 39 def process_trace(tp) if tp.event == :call @level +=1 hash = EventSerializer.call(tp, @level) return unless filter.call(hash) @calls += 1 event_store << Event.new(hash) end if tp.event == :return && @level > 0 @returns += 1 @level -=1 end end
reveal() { || ... }
click to toggle source
# File lib/rshade/trace.rb, line 21 def reveal return unless block_given? @tp.enable yield self ensure @tp.disable end
show()
click to toggle source
# File lib/rshade/trace.rb, line 31 def show formatter.call(event_store) end
stat()
click to toggle source
# File lib/rshade/trace.rb, line 35 def stat { calls: @calls, returns: @returns } end