class Thread::Backtrace::Location

要約

Ruby のフレームを表すクラスです。

Kernel.#caller_locations から生成されます。

例1:

# 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

例1の実行結果:

caller_locations.rb:2:in `a'
caller_locations.rb:5:in `b'
caller_locations.rb:8:in `c'

例2:

# 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

例2の実行結果:

init.rb:4:in `initialize'
init.rb:8:in `new'
init.rb:8:in `<main>'

参考

目次

インスタンスメソッド

インスタンスメソッド

absolute_path -> String[permalink][rdoc]

self が表すフレームの絶対パスを返します。



# 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.absolute_path
end

# => /path/to/foo.rb
# /path/to/foo.rb
# /path/to/foo.rb

[SEE_ALSO] Thread::Backtrace::Location#path

base_label -> String[permalink][rdoc]

self が表すフレームの基本ラベルを返します。通常、 Thread::Backtrace::Location#label から修飾を取り除いたもので構成されます。



# 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.base_label
end

# => initialize
# new
# <main>

[SEE_ALSO] Thread::Backtrace::Location#label

inspect -> String[permalink][rdoc]

Thread::Backtrace::Location#to_s の結果を人間が読みやすいような文字列に変換したオブジェクトを返します。



# 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.inspect
end

# => "path/to/foo.rb:5:in `initialize'"
# "path/to/foo.rb:9:in `new'"
# "path/to/foo.rb:9:in `<main>'"
label -> String[permalink][rdoc]

self が表すフレームのラベルを返します。通常、メソッド名、クラス名、モジュール名などで構成されます。

例: Thread::Backtrace::Location の例1を用いた例

loc = c(0..1).first
loc.label # => "a"

[SEE_ALSO] Thread::Backtrace::Location#base_label

lineno -> Integer[permalink][rdoc]

self が表すフレームの行番号を返します。

例: Thread::Backtrace::Location の例1を用いた例

loc = c(0..1).first
loc.lineno # => 2
path -> String[permalink][rdoc]

self が表すフレームのファイル名を返します。

例: Thread::Backtrace::Location の例1を用いた例

loc = c(0..1).first
loc.path # => "caller_locations.rb"

[SEE_ALSO] Thread::Backtrace::Location#absolute_path

to_s -> String[permalink][rdoc]

self が表すフレームを Kernel.#caller と同じ表現にした文字列を返します。



# 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

# => path/to/foo.rb:5:in `initialize'
# path/to/foo.rb:9:in `new'
# path/to/foo.rb:9:in `<main>'