Ruby 如何从类中动态添加/扩展方法?

Ruby 如何从类中动态添加/扩展方法?,ruby,oop,class-method,instance-method,Ruby,Oop,Class Method,Instance Method,我正在音频应用程序环境中使用Ruby组件。这个Ruby组件由一个RubyEdit类的实例表示。这提供了Ruby代码与环境之间的接口 例如,如果我编写self,它将输出表示该组件的RubyEdit类的实例: 好的方面是,我可以/必须“实现/扩展”一些方法,RubyEdit在获得一些事件时将调用这些方法。我可以为该实例定义自定义方法event: def event # my own event code end 当环境在这个Ruby组件之外获得一些事件时,就会调用它。或者我可以调用一个名

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

例如,如果我编写
self
,它将输出表示该组件的RubyEdit类的实例:

好的方面是,我可以/必须“实现/扩展”一些方法,
RubyEdit
在获得一些事件时将调用这些方法。我可以为该实例定义自定义方法
event

def event
    # my own event code
end
当环境在这个Ruby组件之外获得一些事件时,就会调用它。或者我可以调用一个名为重画的
类方法
,它将调用我的自定义方法
绘制

  def draw
     # my own draw code (this will called after invoking redraw from Ruby Component)
  end
我需要了解这个过程的一些层次结构,所以我正在Ruby中模拟
RubyEdit

看起来怎么样?我的意思是:我如何提供将在“以后”定义的方法

这就是RubyEdit的外观,我认为:

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

  def draw
  end

  def event
  end
end
但是我不知道如何将
事件
绘制方法扩展。接口

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