class Thread::Backtrace::Location
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 end
Running 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 end
Now run ruby foo.rb and you should see:
init.rb:4:in `initialize' init.rb:8:in `new' init.rb:8:in `<main>'
Public Instance Methods
() → String?
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/core/thread.rbs, line 1300
def absolute_path: () -> String?
Returns the full file path of this frame.
Same as path, except that it will return absolute path even if the frame is in the main script.
() → String?
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/core/thread.rbs, line 1329
def base_label: () -> String?
Returns the base label of this frame, which is usually equal to the label, without decoration.
Consider the following example:
def foo puts caller_locations(0).first.base_label 1.times do puts caller_locations(0).first.base_label 1.times do puts caller_locations(0).first.base_label end end end
The result of calling foo is this:
foo foo foo
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/core/thread.rbs, line 1359
def label: () -> String?
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 end
The result of calling foo is this:
foo block in foo block (2 levels) in foo
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/core/thread.rbs, line 1373
def lineno: () -> Integer
Returns the line number of this frame.
For example, using caller_locations.rb from Thread::Backtrace::Location
loc = c(0..1).first loc.lineno #=> 2
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/core/thread.rbs, line 1389
def path: () -> String?
Returns the file name of this frame. This will generally be an absolute path, unless the frame is in the main script, in which case it will be the script location passed on the command line.
For example, using caller_locations.rb from Thread::Backtrace::Location
loc = c(0..1).first loc.path #=> caller_locations.rb