paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

Rubyでメソッド一覧を確認するmethodsメソッドが便利

例えば、destroy!メソッドってあったっけ?みたいな場合など、
rubyでメソッド一覧を調べたいときにはmethodsメソッドを使います。
sortgrepと組み合わせるとなお良しです。

使用出来るメソッド一覧を表示する

@bbs = Bbs.new
pp @bbs.methods
--------------出力結果--------------
[:_run__3416252266121788162__initialize__4586295953617865946__callbacks,
 :id,
 :id=,
 :id_before_type_cast,
 :id?,
 :id_changed?,
 :id_change,
 :id_will_change!,
 :id_was,
 :reset_id!,
 :name,
 :name=,
 :name_before_type_cast,
...

メソッド一覧をソートして表示する

@bbs = Bbs.new
pp @bbs.methods.sort
--------------出力結果--------------
[:!,
 :!=,
 :!~,
 :<=>,
 :==,
 :===,
 :=~,
 :Factory,
 :[],
 :[]=,
 :__binding__,
 :__id__,
 :__send__,
 :_accessible_attributes,
...

一覧からdestroyを含むメソッドだけ抽出して表示する

@bbs = Bbs.new
pp @bbs.methods.grep(/destroy/)
--------------出力結果--------------
[:_destroy_callbacks,
 :_destroy_callbacks?,
 :_destroy_callbacks=,
 :destroy,
 :_destroy,
 :destroyed?]

結果からdestroy!メソッドなんてないことがわかります。
なお、

% ./script/rails console

を使うとコンソールから実行できるのでこういうチェックなどに便利です。

参考