Что вам нужно, это include
. Возможно, вы использовали его раньше в модулях, но он работает и в классах, поскольку Class наследует от Module в Ruby. Поместите ваши методы поддержки в модуль и include
в основной класс.
Что касается метода класса prelude
, просто вызовите его для объекта, который вы дали в методе included
модуля.
base.rb:
require "foo"
require "bar"
class Base < Library
include FooSupport
include BarSupport
end
foo.rb:
module FooSupport
def self.included (klass)
klass.prelude "..."
end
def foo; "..." end
end
Редактировать: Если вам нужно чередовать вызовы prelude
и определения методов, вам может понадобиться что-то более похожее на:
module FooSupport
def self.included (klass)
klass.class_eval do
prelude "..."
def foo; "..." end
prelude "..."
def bar; "..." end
end
end
end