Создание класса во время выполнения в модуле/пространстве имен

Создание класса во время выполнения выполняется следующим образом:

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"
7
задан danlee 24 June 2012 в 11:02
поделиться