以下是處理:我需要使用某些方法擴展具體類的實例。我需要包括模塊內的生活方式,我希望Box實例能夠包括動態模塊。 我現在用一個鉤子與一個eval:將模塊中的方法動態添加到類的特定實例中
class Box
def after_initialize
if self.injected_module.present?
eval("class << self; include #{self.injected_module}; end")
end
end
end
這是合作得非常好,但我真的覺得髒當我使用EVAL。我正在尋找類似的東西:
module_to_inject = self.injected_module
self.eigenclass.class_eval do
include module_to_inject
end
但我不能沒有的Monkeypatching類,如能夠得到eigenclass上運行class_eval:
class Box; def eigenclass; class << self; self; end end end
有一個美麗的(和可靠)的方式來做到這一點?
非常感謝!它像一個魅力一樣工作! – 2011-03-14 12:53:41