4

如果您的同事在 Ruby 中“打开”(“monkeypatches”)一个类并重新定义了一些您需要使用的重要功能,您如何访问原始的预猴子补丁功能而不破坏已经依赖/依赖于他的猴子补丁定义的系统?

4

3 回答 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

我最近在 ruby​​flow 提要中看到了这一点 - 它是一个简单的库,可让您命名名为aikidoka的顶级常量。如果没有关于如何/什么被猴子修补的任何细节,很难提供帮助。理论上,尽管您可以使用这样的方法来命名该类的猴子补丁版本,以便您可以独立访问它和原始版本。

于 2009-05-16T04:15:29.207 回答
0

完全取决于更改了哪些功能以及以何种方式更改,但是像 Jim Wienrich 的 BlankSlate 类这样的实现可能会有所帮助:

于 2009-05-16T02:48:19.273 回答