superと書いた時にどのclassのmethodが呼ばれるのか?

superと書いた時にどのclassのmethodが呼ばれるのか?

Ruby super と書いた時に、どこで定義したやつが呼ばれるのかがぱっと知りたかった。

self.class.ancestors.each { |k| if k.method_defined? :<知りたいメソッド名>; puts k; end }
とかで、祖先の中の同名methodの定義されてるclassがわかる気がした。
method_missing とかで反応してると見えないけど。
include されてるやつとかもこれだと反応してしまう。

なんかもっといい方法ある?
method(:<name>).super_method.source_location とかで定義されている位置がすぐにわかるとのお便りを頂きました。
これだと super super のlocationがわからなかったりする。
調べたいところのクラス C とメソッド m に対して C.instance_method(:m).super_method するしかないのかな。
呼んでみればTracePointでわかる という方法もあるというお便り

Powered by Helpfeel