2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでメソッドの定義箇所を 探す裏技

Last updated at Posted at 2019-10-18

こんなケースがあった

あるインスタンスメソッドに関して、
自分が考えうる定義箇所を全部見てまわり、
grep検索もかけたけど、どうしても定義箇所が見つからない。
ほんと、どこにあるのよ。w

普段のメソッド箇所の見つけ方

例えば、
@user.hoge と書かれていたら、
User モデルに hoge メソッドが定義されてるんだろうな。
つまり、app/models/user.rbhoge メソッドの内容が書かれているはずだ。
もし書かれていなかった場合は継承元に書かれているかも。
もしくは、ヘルパーがincludeされていれば、そのヘルパーに定義されているはずだ。
(注意点としては、ヘルパーがincludeされている可能性は、継承元にもあるということ。)
それでも見つからない場合は、

$ git grep hoge

という感じでgrep検索する。
それでも見つからない場合は・・・さぁどうしよう!

裏技みたいなやり方があった

まずはRailsコンソールを立ち上げて、コンソール上から

> @user.method(:hoge).source_location

日本語訳すると、Userモデルのインスタンスが持ってるインスタンスメソッドのうち、hoge というメソッドの情報を取得して、そのメソッドのソースの在り処を取得するよ、って感じです。

最後に

やり方はわかったし、これは便利だ。
ただこれは、初中級者にはあまり教えたくない機能でもあります。
というのも、
これを多用しだすと、全体の構造が把握しづらくなります。
ですので、極力自分でどこに何が書いてあるかを把握するようにして、
最終手段としてこの方法を使うことをオススメします。
(同じ理由で、ジャンプ機能と呼ばれているものも同様です。便利ですけどね!)

補足

RailsというよりはRubyのメソッドなので、Railsでなくても使えます。
最近のバージョンであれば。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?