メソッドの多くに共通のパターンを持つサブクラスがあります。
if some_condition
(real code goes here)
else
super
end
理想的には、次のようにカプセル化したいと思います。
def if_some_condition
if some_condition
yield
else
(calling method's super)
end
end
のブランチでsuper
呼び出すことができるように、呼び出し元のメソッドをキャプチャする方法はありますか?else
if_some_condition
some_condition
(別のサブクラスの使用を提案する前に、そのクラスのオブジェクトの存続期間にわたって頻繁に変更される可能性があることに注意してください。)
編集:
考えられる解決策は次のとおりです。
def if_some_condition(&b)
if some_condition
yield
else
b.send(:binding).eval('super')
end
end
eval
ただし、可能であればの使用は避けたいと思います。