Я работаю над внутренним Ruby DSL, и чтобы он выглядел как можно красивее, мне нужно исправить класс 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
конец