Class: RubyProf::CallInfoVisitor

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby-prof/call_info_visitor.rb

Overview

The call info visitor class does a depth-first traversal across a list of method infos. At each call_info node, the visitor executes the block provided in the #visit method. The block is passed two parameters, the event and the call_info instance. Event will be either :enter or :exit.

visitor = RubyProf::CallInfoVisitor.new(result.threads.first.root_methods)

method_names = Array.new

visitor.visit do |call_info, event|
  method_names << call_info.target.full_name if event == :enter
end

puts method_names

Instance Method Summary collapse

Constructor Details

#initialize(root_methods) ⇒ CallInfoVisitor

Returns a new instance of CallInfoVisitor.



18
19
20
# File 'lib/ruby-prof/call_info_visitor.rb', line 18

def initialize(root_methods)
  @call_infos = root_methods.map(&:callers).flatten
end

Instance Method Details

#visit(&block) ⇒ Object



22
23
24
25
26
# File 'lib/ruby-prof/call_info_visitor.rb', line 22

def visit(&block)
  @call_infos.each do |call_info|
    visit_call_info(call_info, &block)
  end
end