Возможно ли в Ruby определить новый не-одноэлементный класс на основе одноэлементного класса?
Я пробовал что-то вроде этого (отрывок):
module SomeModule
extend self
class Singleton;end
end
class NonSingleton
include SomeModule
end
nonsingleton = NonSingleton.new
Но, конечно, для вас, гуру, уже очевидно, что это не сработает, как я ожидал.
По сути, я хочу повторно использовать функциональность класса Singleton, не затрагивая его поведение каким-либо образом. Возможно ли это?
После дальнейшего расследования может показаться, что это вообще невозможно (пожалуйста, поправьте меня, если я ошибаюсь). Будет ли хак вроде следования слишком беспорядочным / грязным?
singleton = File.read('some_singleton.rb')
non_singleton = eval(singleton.gsub('include Singleton', ''))
# Or perhaps:
non_singleton = eval(singleton.gsub('module SomeModule', 'module MyOwnModule'))