私は内部RubyDSLに取り組んでおり、それをできるだけきれいに見せるために、Symbolクラスにモンキーパッチを適用し、いくつかの演算子を追加する必要があります。私はこれをどのように行うかについて責任を持ち、パッチの範囲と存続期間を特定のコードブロックに制限したいと思います。これを行うための標準的なパターンはありますか?これが私が考えていることを示すためのいくつかの擬似コードです:
class SomeContext
def self.monkey_patch_region(&block)
context = SomeContext.new
context.monkey_patch_Symbol
context.instance_eval(&block)
context.unmonkey_patch_Symbol
end
# magical method
def monkey_patch_Symbol
#...
end
# another magical method
def unmonkey_patch_Symbol
#...
end
終わり