Sha256: cbd16206e9db39327d792fb8e1f256dd9d74659e790d3d69dd59f79589a31e98

Contents?: true

Size: 674 Bytes

Versions: 3

Compression:

Stored size: 674 Bytes

Contents

require 'derketo/event_trace'
require 'derketo/events/call'
require 'derketo/events/return'
module Derketo
  class Tracer
    attr_accessor :events
    def initialize(scope: nil)
      @events = Derketo::EventTrace.new
      @tracepoint = TracePoint.new(:call, :return) do |tp|
        if scope.nil? || tp.path.include?(scope)
          if tp.event == :call
            @events.push(Derketo::Events::Call.new(tp))
          elsif tp.event == :return
            @events.push(Derketo::Events::Return.new(tp))
          end
        end
      end
    end

    def trace
      @tracepoint.enable
      response = yield
      @tracepoint.disable
      response
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
derketo-0.1.2 lib/derketo/tracer.rb
derketo-0.1.1 lib/derketo/tracer.rb
derketo-0.1.0 lib/derketo/tracer.rb