Help us understand the problem. What is going on with this article?

メソッドの定義場所 調べる方法まとめ プロジェクト内とRails/Gem内で定義されている場合

動機

新しいプロジェクトに参加した時、もうメソッドだらけでどこに定義されているか調べることにかなり苦労しました。早くキャッチアップするためには、「早く調べて理解する力」が非常に重要と感じ、先輩エンジニアにも聞きながらまとめてみました。

調べ方も一長一短あります。

プロジェクト内で定義されているメソッドの場合

1. git grep -n <メソッド名>

  • エディタの全文検索より、ターミナルで色付きで表示されるので見やすいです
  • -n オプションで行番号がつくので、コマンド + パスクリックでエディタで開きます!
  • デメリット:あくまで文字列検索。かなり沢山ヒットしたりする。 "def メソッド名"とすると多少絞られる。

2. ブラウザでGithubの検索窓に入力し、"in this repository"で検索

  • この方法は1.と結果は同じなのですが、マッチした箇所の上下数行もまとめて表示されます。
  • エディタを使いたくない時にいいです
  • デメリット:あくまで文字列検索。かなり沢山ヒットしたりする。 "def メソッド名"とダブルクオーテーションをいれると絞られる

3. pry-docsのshow-source機能を使う

  • Railsコンソールで、$ <メソッド名> OR show-source <メソッド名>
  • 定義箇所のdefからendまでを表示してくれます!
  • パスも出るので、コマンド + クリックでエディタで表示できます。
  • デメリット:user.method を調べたい時、Userインスタンスを作成してからでないと調べられないので手間。

4. Pryの"step"機能を使う

  • binding.pryで停止した時に、stepを実行すると、そのメソッド内に"入る"ことができます。
  • 処理の流れと変数の定義も見ることができ、深い理解ができます。
  • Rails/Gemなど深いところも見れます。
  • デメリット:binding.pryの設置と、処理を走らせ止めることがめんどくさい。

ピカワカ【Rails】Pryについて徹底解説!

Gemなどプロジェクト外で定義されている場合

1. Dashで検索する

  • Dashとは、素のRuby、Rails, Gem、JavaScriptなど色んなドキュメントの横断検索ができるツールです。
  • ソースコードに加えて、そのメソッドの説明付きなので理解も早くなります。
  • VSCodeに拡張機能"Dash"をいれることで、コマンド + H でDash検索に飛べます
  • デメリット:たまに調べたいGemがなかったりする

2. bundle show <gem名>

  • Gemのインストールされたディレクトリが表示されるので、VSCodeならコマンド + クリックで別ウィンドウで開くことができます。
  • デメリット:gitやpryは使えないので、エディタの横断検索でメソッドを見つける必要があります。

3. Pryの"step"機能を使う

  • プロジェクト内で定義されているメソッドの場合と同じです。

4. ブラウザでGithubの検索窓に入力し、"in this repository"で検索

  • プロジェクト内で定義されているメソッドの場合と同じです。

その他

1. Rubymineの定義元ジャンプを使う

  • VSCode使用者なので使ったことないです。が、RubyやRails、Gem内の定義ならDashでほぼまかなえる気がします。
  • デメリット:高い、遅い

2. VSCodeの拡張機能 Solargraphを使う

  • Rubyメソッドの上にカーソルを載せるだけで、そのドキュメントや使用例が表示されます。
  • 補完機能もあり
  • デメリット:Dockerを使用する場合は辛い。SolargraphはそのLanguage serverを起動させ続ける必要がある。Solargrapコンテナを立ち上げ、Portの設定をVSCodeにする必要がある。参考:Docker環境でsolargraphを使う方法

最後に

  • 皆様の「調べ方」が知りたいです。
  • 他に良い方法があれば、コメントにて教えてくださいm(_ _)m
kumasan3
Ruby on Rails 駆け出しWebエンジニアです。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした