假设您的同事猴子修补了 Fixnum 类并重新定义了 + 方法以减去而不是添加:
class Fixnum
def +(x)
self - x
end
end
>> 5 + 3
=> 2
您的问题是您想访问 + 方法的原始功能。所以你把这段代码放在他之前的同一个源文件中。在他对其进行猴子补丁之前,它会将+ 方法别名为“original_plus” 。
class Fixnum
alias_method :original_plus, :+
end
class Fixnum
def +(x)
self - x
end
end
现在您可以通过 original_plus 访问 + 方法的原始功能
>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
但我需要知道的是:
除了将其粘贴到他修改的同一源文件中之外,还有其他方法可以在加载他的猴子补丁之前加载此别名吗?
我的问题有两个原因:
- 我可能不想让他知道我已经这样做了
- 如果源文件被更改,使得别名最终低于猴子补丁,则别名将不再产生所需的结果。