Sha256: 7092078cb95b0119dae0aefb98d8807c75e810ab4661566743ca4d52fb4639ef

Contents?: true

Size: 862 Bytes

Versions: 37

Compression:

Stored size: 862 Bytes

Contents

# frozen_string_literal: true

module AppMap
  module Command
    RecordStruct = Struct.new(:config, :program)

    class Record < RecordStruct
      def perform(&block)
        tracer = AppMap.tracing.trace

        events = []
        quit = false
        event_thread = Thread.new do
          while tracer.event? || !quit
            event = tracer.next_event
            if event
              events << event.to_h
            else
              sleep 0.0001
            end
          end
        end
        event_thread.abort_on_exception = true

        at_exit do
          quit = true
          event_thread.join
          yield AppMap::APPMAP_FORMAT_VERSION,
                AppMap.detect_metadata,
                AppMap.class_map(tracer.event_methods),
                events
        end

        load program if program
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
appmap-0.51.2 lib/appmap/command/record.rb
appmap-0.51.1 lib/appmap/command/record.rb
appmap-0.51.0 lib/appmap/command/record.rb
appmap-0.50.0 lib/appmap/command/record.rb
appmap-0.49.0 lib/appmap/command/record.rb
appmap-0.48.2 lib/appmap/command/record.rb
appmap-0.48.1 lib/appmap/command/record.rb
appmap-0.48.0 lib/appmap/command/record.rb
appmap-0.47.1 lib/appmap/command/record.rb
appmap-0.47.0 lib/appmap/command/record.rb
appmap-0.46.0 lib/appmap/command/record.rb
appmap-0.45.1 lib/appmap/command/record.rb
appmap-0.45.0 lib/appmap/command/record.rb
appmap-0.44.0 lib/appmap/command/record.rb
appmap-0.41.2 lib/appmap/command/record.rb
appmap-0.41.1 lib/appmap/command/record.rb
appmap-0.41.0 lib/appmap/command/record.rb
appmap-0.40.0 lib/appmap/command/record.rb
appmap-0.39.1 lib/appmap/command/record.rb
appmap-0.39.0 lib/appmap/command/record.rb