有没有办法从第三方模块(包含在gem中)覆盖私有方法?我尝试使用prepend,但无论我做什么,原始模块似乎都会进入方法查找链。以下是说明问题的简化示例:
PROP2
FWIW - Ruby 2.5版。
答案 0 :(得分:0)
这是一个hacky,但工作方法:
ThirdPartyGem::SeeminglyUntouchable.send(
:undef_method, :hidden_interface)
ThirdPartyGem::SeeminglyUntouchable.send(
:define_method, :hidden_interface, ->(chunky){ chunky.upcase })
ThirdPartyGem::SeeminglyUntouchable.send(
:private, :hidden_interface)