メソッドの定義場所を見つける

> obj.method(:method_name).source_location

参考:

Ruby でメソッドの定義場所を見つける方法 – Qiita

instance method Object#method (Ruby 2.6.0)

instance method Method#source_location (Ruby 2.6.0)

instance method Proc#source_location (Ruby 2.6.0)

How to find the method definition in Ruby | Rails Guides

How can I get source code of a method dynamically and also which file is this method locate in – Stack Overflow

クラスや定数の定義場所を見つける

TL;DR

クラスや定数に何か値を再代入すると警告と共に元の定義場所が出力される。

> Rails = Rails
warning: already initialized constant Rails
/path/to/vendor/bundle/ruby/2.6.0/gems/railties-6.0.0.rc1/lib/rails/initializable.rb:5: warning: previous definition of Rails was here

参考:

Ruby で class や const の定義位置を調べる方法 – Qiita

Ruby でクラスのソースを表示するコード – Qiita

Feature #10771: An easy way to get the source location of a constant | Ruby Issue Tracking System

Source location of a class – Stack Overflow

lambda / Proc のソースコード

参考:

Ruby のメソッド、Proc のソースを取り出す – Qiita

Feature #2080: Proc#to_source, Method#to_source | Ruby Issue Tracking System

Extracting Lambda Source Code | Developer.Notes

Is it possible to see the ruby code in a proc? – Stack Overflow

Printing the source code of a Ruby block – Stack Overflow

Pry

ソースのコメントを表示する。

> ? obj.method_name

メソッドの定義 (ソース) を表示する。

> $ obj.method_name

参考:

Ruby でメソッドの定義場所を見つける方法 – Qiita

Pry::Method#source

特異メソッドのソースを取得する。

Pry::Method(obj.method(:method_name)).source

インスタンスメソッドのソースを取得する。

Pry::Method(mod.instance_method(:method_name)).source

Proc のソースを取得する。

square = -> (x) { x * x }
Pry::Method(square).source
# => "square = -> (x) { x * x }\n"

参考:

source – pry/method.rb at v0.12.2 · pry/pry – GitHub

method_source

参考:

banister/method_source: return the sourcecode for a method – GitHub

Sourcify

参考:

ngty/sourcify: Workarounds before ruby-core officially supports Proc#to_source (& friends)

ruby2ruby

参考:

seattlerb/ruby2ruby – GitHub

Documentation for ruby2ruby | RubyDoc.info

sexp_processor

参考:

seattlerb/sexp_processor – GitHub

Documentation for sexp_processor | RubyDoc.info

Gist コード

参考:

A little Ruby module for finding the source location where class and methods are defined – GitHub Gist

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です