Ruby でメソッドの定義元をシュッと調べる
デバッグなどしている時に Rails の実装を読みたい!、ということはよくあると思うんですが、そういう時にシュッと定義元を開きたいですよね。
優秀な IDE とかだとそういう機能もあるかもしれませんが、irb や pry を実行している時にサクッと調べたいですよね。
Method#source_location
を使う
そういうときには Method#source_location
を利用する事が出来ます。
# まず #method で Method のインスタンスを取得して、#source_location を呼び出す User.method(:pluck).source_location # => ["~/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0/lib/active_record/querying.rb", 16]
こんな感じでどのファイルの何行目で定義されているメソッドなのかを取得する事が出来ます。
Ruby に組み込まれているメソッドなので Rails のように闇の深いライブラリでもだいたい定義場所を調べることが出来ます。
注意
Method#source_location
ですが、Ruby のコードの定義場所を調べることは出来ますが、C拡張で実装されているメソッドの場合は nil
を返すので、標準ライブラリを調べる場合は注意しましょう。
[].method(:===).source_location # => nil