Поместите ваши методы класса во вложенный модуль, а затем переопределите «включенный» хук.Этот хук вызывается каждый раз, когда ваш модуль включен.Внутри хука добавьте методы класса тому, кто включил:
module Foo
def self.included(o)
o.extend(ClassMethods)
end
module ClassMethods
def foo
'foo'
end
end
end
Теперь любой класс, включая Foo, получает метод класса с именем foo:
class MyClass
include Foo
end
p MyClass.foo # "foo"
Любые не-классовые методы могутбыть определенным в Foo как обычно.