はじめに
実務でrubyを書いているのですが、インスタンスやクラスにどういうメソッドがあるか調べる方法を調べてみました。
環境
❯ ruby -v
ruby 3.2.0
クラスにメソッドが定義されているか調べる
クラスオブジェクトに対してinstance_methodsメソッドを使うと調べられます。
さらにgrepを使って絞り込みました。
instance_methodsメソッドの戻り値はarrayなのでgrepメソッドが使えます
https://docs.ruby-lang.org/ja/latest/method/Enumerable/i/grep.html
irb(main):017> Range.instance_methods.grep(/each/)
=>
[:each,
:each_cons,
:each_with_object,
:each_with_index,
:reverse_each,
:each_entry,
:each_slice]
用途
対象クラスでどんなメソッドが使えるか調べられます。
しかし、公式ドキュメントを探しに行った方が早いかもしれません
https://docs.ruby-lang.org/ja/latest/class/Range.html
インスタンスに対してはmethodsメソッドで調べられる
インスタンスに対してはmethodsメソッドで利用できるメソッド一覧を調べられる。
同じく戻り値は配列なので、grepで絞り込める
irb(main):027> [].methods.grep /each/
=>
[:each_index,
:reverse_each,
:each,
:each_cons,
:each_with_object,
:each_with_index,
:each_entry,
:each_slice]
grepメソッドは部分一致検索なので、メタ文字列を使用しなくてもサクッと調べられるのが良い
irb(main):030> [].methods.grep /.*each.*/
=>
[:each_index,
:reverse_each,
:each,
:each_cons,
:each_with_object,
:each_with_index,
:each_entry,
:each_slice]