Создание класса во время выполнения выполняется следующим образом:
klass = Class.new superclass, &block
Object.const_set class_name, klass
Пример:
class Person
def name
"Jon"
end
end
klass = Class.new Person do
def name
"#{super} Doe"
end
end
Object.const_set "Employee", klass
puts Employee.new.name # prints "Jon Doe"
Теперь предположим, что у вас есть модуль с именем Company:
module Company
end
Как создать класс Employee во время выполнения в модуле/пространстве имен Company, чтобы следующий результат давал тот же результат?
puts Company::Employee.new.name # prints "Jon Doe"