我正在开发一个内部 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
结尾