Class: Thread::Backtrace::Location
| Relationships & Source Files | |
| Inherits: | Object | 
| Defined in: | vm_backtrace.c | 
Overview
An object representation of a stack frame, initialized by Kernel.caller_locations.
For example:
# caller_locations.rb
def a(skip)
  caller_locations(skip)
end
def b(skip)
  a(skip)
end
def c(skip)
  b(skip)
end
c(0..2).map do |call|
  puts call.to_s
endRunning ruby caller_locations.rb will produce:
caller_locations.rb:2:in `a'
caller_locations.rb:5:in `b'
caller_locations.rb:8:in `c'Here's another example with a slightly different result:
# foo.rb
class Foo
  attr_accessor :locations
  def initialize(skip)
    @locations = caller_locations(skip)
  end
end
Foo.new(0..2).locations.map do |call|
  puts call.to_s
endNow run ruby foo.rb and you should see:
init.rb:4:in `initialize'
init.rb:8:in `new'
init.rb:8:in `<main>'Instance Method Summary
- 
    
      #absolute_path  
    
    Returns the full file path of this frame. 
- 
    
      #base_label  
    
    Returns the base label of this frame. 
- 
    
      #inspect  
    
    Returns the same as calling inspecton the string representation of#to_str
- 
    
      #label  
    
    Returns the label of this frame. 
- 
    
      #lineno  
    
    Returns the line number of this frame. 
- 
    
      #path  
    
    Returns the file name of this frame. 
- 
    
      #to_s  
    
    Returns a Kernel.caller style string representing this frame. 
Instance Method Details
#absolute_path
Returns the full file path of this frame.
Same as #path, but includes the absolute path.
#base_label
Returns the base label of this frame.
Usually same as #label, without decoration.
#inspect
Returns the same as calling inspect on the string representation of #to_str
#label
Returns the label of this frame.
Usually consists of method, class, module, etc names with decoration.
Consider the following example:
def foo
  puts caller_locations(0).first.label
  1.times do
    puts caller_locations(0).first.label
    1.times do
      puts caller_locations(0).first.label
    end
  end
endThe result of calling foo is this:
label: foo
label: block in foo
label: block (2 levels) in foo#lineno
Returns the line number of this frame.
For example, using caller_locations.rb from Location
loc = c(0..1).first
loc.lineno #=> 2#path
Returns the file name of this frame.
For example, using caller_locations.rb from Location
loc = c(0..1).first
loc.path #=> caller_locations.rb#to_s
Returns a Kernel.caller style string representing this frame.