У меня есть одноэлементный код в моем приложении, который используется повторно для всех приложений. Я хочу, чтобы singleton получал некоторые методы по умолчанию из моего класса, но также мог настраивать модуль/eigenclass. Прежде всего, я не хочу вызывать instance
при каждом вызове утилиты singleton.Наличие модуля Singleton, расширяющего класс
Вот пример. Скажем, мой класс по умолчанию - Universe::Earth
. Затем я хочу, чтобы в моем приложении был модуль Earth
, который «расширяет» этот класс.
module Universe
class Earth
def self.grow!
@grown = true
end
end
end
module Earth
class < Universe::Earth << self; end
grow!
end
Когда это бежать, grow!
является NoMethodError
.
Пробовал эти подходы:
Class.new(Goodluck::Contest) << self
class < Universe::Earth << self; end
extend Universe::Earth
Как заставить его работать?
Не совсем. Я пытаюсь создать DSL для него. Поэтому каждый раз призывать «Землю» было бы болью. –
Джонатан, извините за задержку в изменении моего ответа. Дайте мне знать, если он все еще не отвечает на ваш вопрос. –