如果您的同事在 Ruby 中“打开”(“monkeypatches”)一个类并重新定义了一些您需要使用的重要功能,您如何访问原始的预猴子补丁功能而不破坏已经依赖/依赖于他的猴子补丁定义的系统?
问问题
458 次
3 回答
5
给定方法覆盖的示例,如果您可以在加载他的猴子补丁之前加载一些代码,那么您可以为该方法设置别名。
class Fixnum
alias_method :original_plus, :+
end
class Fixnum
def +(x)
self - x
end
end
>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
于 2009-05-16T05:02:30.247 回答
3
我最近在 rubyflow 提要中看到了这一点 - 它是一个简单的库,可让您命名名为aikidoka的顶级常量。如果没有关于如何/什么被猴子修补的任何细节,很难提供帮助。理论上,尽管您可以使用这样的方法来命名该类的猴子补丁版本,以便您可以独立访问它和原始版本。
于 2009-05-16T04:15:29.207 回答
0
完全取决于更改了哪些功能以及以何种方式更改,但是像 Jim Wienrich 的 BlankSlate 类这样的实现可能会有所帮助:
于 2009-05-16T02:48:19.273 回答