I'm using a Ruby Component inside an Audio Application Environment. This Ruby Component is represented by an instance of a RubyEdit class. This provide the interface between my Ruby code and the Environment.
For example if I write self it outputs the instance of the RubyEdit class that represents that component:
the nice things is that I can/must "implement/extend" some methods that RubyEdit will call when it get some events. I can define my custom method event for that instance:
def event
# my own event code
end
and it will be called when the Environment get some events outside this Ruby Component. Or I can call a class method called redraw, and it will call my custom method draw:
def draw
# my own draw code (this will called after invoking redraw from Ruby Component)
end
I need to understand some hierarchy of this process, so I'm making a simulation of that RubyEdit class in Ruby.
How it will looks? I mean: how can I provide methods that will be defined "later"?
This is how RubyEdit will look I think:
class RubyEdit
def self.redraw
# calling this class method should invoke my extended draw method
end
def draw
end
def event
end
end
but I don't understand how to place event and draw methods extendible. Interfaces?
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