在ruby模块中覆盖第三方私有方法?

时间:2018-04-11 07:14:14

标签: ruby methods module override

有没有办法从第三方模块(包含在gem中)覆盖私有方法?我尝试使用prepend,但无论我做什么,原始模块似乎都会进入方法查找链。以下是说明问题的简化示例:

PROP2

FWIW - Ruby 2.5版。

1 个答案:

答案 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)