你怎么能在Ruby中做一个安全的,向后兼容的"反向monkeypatch"?

pez*_*ser 4 ruby reverse monkeypatching

如果您的同事"打开"("monkeypatches")Ruby中的一个类并重新定义了您需要使用的一些重要功能,那么如何在不破坏已经依赖于其monkeypatched定义的系统的情况下访问原始的monkeypatched功能?

Ian*_*ell 5

给定方法覆盖的示例,如果您可以在加载猴子补丁之前加载一些代码,那么您可以为该方法添加别名.

class Fixnum
  alias_method :original_plus, :+
end

class Fixnum
  def +(x)
    self - x
  end
end

>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
Run Code Online (Sandbox Code Playgroud)