概要
Method#source_location を使います
環境
- macOS 10.15.4
- Ruby 2.7.1p83
サンプルコード
module A
class B
def hoge
puts "hoge"
end
def self.fuga
puts "fuga"
end
end
end
p A::B.instance_method(:hoge).source_location
p A::B.public_method(:fuga).source_location
インスタンスメソッドの場合は instance_method
を使いクラスメソッドの場合は public_method
を使いましょう
とりあえずクラス内にあるメソッド全部の場所を調べたい場合は以下のようにするといいでしょう
p (A::B.instance_methods + A::B.public_methods - Object.methods).map { |m|
begin
A::B.instance_method(m).source_location
rescue
A::B.public_method(m).source_location
end
}
0 件のコメント:
コメントを投稿