如果您的同事“打开”(“monkeypatches”)Ruby中的一个类并重新定义了您需要使用的一些重要功能,那么如何在不破坏已依赖/依赖的系统的情况下访问原始的monkeypatched功能他的monkeypatched定义?
答案 0 :(得分:5)
考虑到方法覆盖的示例,如果您可以在加载猴子补丁之前加载一些代码,那么您可以为该方法添加别名。
class Fixnum
alias_method :original_plus, :+
end
class Fixnum
def +(x)
self - x
end
end
>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
答案 1 :(得分:3)
我最近在rubyflow feed中看到了这个 - 它是一个简单的库,可以让你命名为aikidoka的顶级常量。没有关于如何/什么是猴子修补的任何细节,它有点难以帮助。理论上虽然您可以使用这样的方法来命名类的猴子修补版本,以便您可以独立访问它和原始版本。
答案 2 :(得分:0)
确切地说取决于改变了哪些功能以及以何种方式改变,但像Jim Wienrich的BlankSlate类这样的实现可能有所帮助: