如果你的同事在Ruby中“打开”(“monkeypatch”)一个类并重新定义了一些你需要使用的重要功能,那么你如何访问那个原始的、未经过猴子补丁处理的功能,而不会破坏已经依赖于他的猴子补丁定义的系统?
以方法重写为例,如果你能在他的猴子补丁加载之前加载一些代码,那么你可以给该方法取一个别名。
class Fixnum
alias_method :original_plus, :+
end
class Fixnum
def +(x)
self - x
end
end
>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
我最近在RubyFlow上看到了这个简单的库,它可以让你命名空间顶级常量,叫做aikidoka。如果没有说明如何和什么被monkey patched,那么帮助就有点困难了。理论上,您可以使用这样的方法来对类的monkey-patched版本进行命名空间,以便您可以独立地访问它和原始版本。