タイトルまんまなんで早速本題
本題
class Foo
def hoge
super if defined?(super) # これより上で`hoge`が定義されているかは不明
puts :foo
end
end
class Bar < Foo
def hoge
super # Fooで`hoge`が定義されているのは知ってるからここはそのままsuper
puts :bar
end
end
Bar.new.hoge # => "bar\nfoo\n"
super if defined?(super)
がキモ。言われてみればそのままだけど、なかなか思いつかなかった。
参考資料
ぶっちゃけ、ここで見たことを書き写したようなもんです。