Module: RailsTracepointStack

Defined in:
lib/rails_tracepoint_stack.rb,
lib/rails_tracepoint_stack/trace.rb,
lib/rails_tracepoint_stack/limits.rb,
lib/rails_tracepoint_stack/logger.rb,
lib/rails_tracepoint_stack/tracer.rb,
lib/rails_tracepoint_stack/version.rb,
lib/rails_tracepoint_stack/sink/log.rb,
lib/rails_tracepoint_stack/truncator.rb,
lib/rails_tracepoint_stack/trace_filter.rb,
lib/rails_tracepoint_stack/trace_record.rb,
lib/rails_tracepoint_stack/configuration.rb,
lib/rails_tracepoint_stack/depth_tracker.rb,
lib/rails_tracepoint_stack/log_formatter.rb,
lib/rails_tracepoint_stack/renderer/tree.rb,
lib/rails_tracepoint_stack/trace_session.rb,
lib/rails_tracepoint_stack/sink/collector.rb,
lib/rails_tracepoint_stack/filter/gem_path.rb,
lib/rails_tracepoint_stack/skill_installer.rb,
lib/rails_tracepoint_stack/filter/rb_config.rb,
lib/rails_tracepoint_stack/renderer/summary.rb,
lib/rails_tracepoint_stack/filter/trace_to_ignore_filter.rb,
lib/rails_tracepoint_stack/filter/trace_from_ruby_code_filter.rb,
lib/rails_tracepoint_stack/filter/custom_trace_selector_filter.rb,
lib/generators/rails_tracepoint_stack/install/install_generator.rb,
lib/rails_tracepoint_stack/filter/trace_from_dependencies_filter.rb

Defined Under Namespace

Modules: Filter, Generators, LogFormatter, Renderer, Sink, TraceFilter, Truncator Classes: Configuration, DepthTracker, Limits, Logger, SkillInstaller, Trace, TraceRecord, TraceSession, Tracer

Constant Summary collapse

CAPTURE_EVENTS =
[:call, :return, :raise].freeze
VERSION =
"0.4.0"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



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

def configuration
  @configuration ||= RailsTracepointStack::Configuration.new
end

.logger=(value) ⇒ Object (writeonly)

Sets the attribute logger

Parameters:

  • value

    the value to set the attribute logger to.



13
14
15
# File 'lib/rails_tracepoint_stack.rb', line 13

def logger=(value)
  @logger = value
end

Class Method Details

.capture(threads: :current, **limit_options) ⇒ Object

Traces a block and hands back everything that happened inside it, instead of writing to a log. Meant to be run as a one-off: capture, read, done.

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/rails_tracepoint_stack.rb', line 28

def self.capture(threads: :current, **limit_options)
  raise ArgumentError, "Block not given to #capture" unless block_given?

  collector = RailsTracepointStack::Sink::Collector.new(
    limits: RailsTracepointStack::Limits.new(**limit_options)
  )
  session = collector.session
  tracer = RailsTracepointStack::Tracer.new(
    sink: collector,
    events: CAPTURE_EVENTS,
    thread: (threads == :all) ? nil : Thread.current
  )

  tracer.enable
  begin
    session.result = yield(session)
  rescue Exception => error
    session.error = error
    raise
  ensure
    tracer.disable
    session.filtered_count = tracer.filtered_count
  end

  session
end

.configure {|configuration| ... } ⇒ Object

Yields:



20
21
22
# File 'lib/rails_tracepoint_stack.rb', line 20

def self.configure
  yield(configuration)
end

.enable_traceObject



55
56
57
58
59
60
61
62
63
# File 'lib/rails_tracepoint_stack.rb', line 55

def self.enable_trace
  raise ArgumentError, "Block not given to #enable_trace" unless block_given?

  tracer = RailsTracepointStack::Tracer.new
  tracer.enable
  yield
ensure
  tracer.disable
end