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 するしかないのかな。