emahiro's ProgrammingBlog

勉強記録と書評とたまに長めの呟きを書きます

rubyでオブジェクトの持つメソッドを探索する

ユースケース

オブジェクトの中に意図するプロパティを取り出せるのかを確かめる方法に、オブジェクトが持つメソッドを調査するという方法があります。
rubyではjsonオブジェクトのプロパティもメソッドとして取り出せるので、プロパティ not found エラーが発生してプログラムの処理が中断してしまわないか予め調べておくことができたら便利です。

Obj.methods.grep(regexp) を使用する。

例えばある特定のAPIを叩いて返ってきたレスポンスオブジェウトのプロパティを調べるという動作を想定します。

response.methods.grep(/任意のメソッド名 or プロパティ名/)

grepメソッドを使って正規表現で調べればいとするメソッドを調査できます。
methods で全てのメソッドを取り出さずとも、特定のメソッド(プロパティ)を取り出すことが可能。

※ 上記サンプルでは前方後方一致を使っています。

これは rails console でも使えるので、api叩いて、ちゃんと想定するレスポンスの型になっているかを事前に調査できるので便利だと思う。