如何从 Class 中动态地 add/extend 方法?

How can I dynamically add/extend methods from a Class?

我在音频应用程序环境中使用 Ruby 组件。此 Ruby 组件由 RubyEdit class 的实例表示。这提供了我的 Ruby 代码和环境之间的接口。

例如,如果我写 self,它会输出代表该组件的 RubyEdit class 的实例:

好的是我 can/must "implement/extend" 一些方法 RubyEdit 在获得一些事件时会调用。我可以为该实例定义自定义方法 event

def event
    # my own event code
end

当环境在此 Ruby 组件之外获得一些事件时将调用它。或者我可以调用一个名为 redrawclass method,它会调用我的自定义方法 draw:

  def draw
     # my own draw code (this will called after invoking redraw from Ruby Component)
  end

我需要了解此过程的一些层次结构,因此我正在 Ruby 中模拟 RubyEdit class。

它看起来如何?我的意思是:我如何提供将被定义的方法 "later"?

这就是Ruby我认为编辑后的样子:

class RubyEdit
  def self.redraw
    # calling this class method should invoke my extended draw method
  end

  def draw
  end

  def event
  end
end

但我不明白如何放置可扩展的 eventdraw 方法。接口?

module ExtendRubyEdit

   def self.included(base)
     base.extend(ClassMethods)
   end

   def draw
   end

   def event
   end

   module ClassMethods
    def redraw
    end
   end
end

class RubyEdit
  include ExtendRubyEdit
end