【发布时间】:2017-07-04 02:27:52
【问题描述】:
假设我有一个假设的 gem,my_gem,它定义了类 AwesomeClass,并且 gem 包含一个二进制文件,仅在 AwesomeClass 上工作,但将 在我的lib/ 目录中加载任何代码,比如说。我想干净地扩展一些类的方法,有时调用相当于super。
假设它看起来像这样:
class AwesomeClass
def cool_method
...
end
end
在这里,在我的库代码中,我想做一些类似的事情:
AwesomeClass.class_eval
def cool_method
(call the original method here)
...
end
end
你会怎么做? alias 是我唯一真正的选择吗?我错过了一些更好的方法吗? class_eval以外的东西?
【问题讨论】:
标签: ruby metaprogramming