在模块名称空间内创建动态命名类

时间:2017-08-18 22:54:20

标签: ruby grape

我正在使用Grape API,我的模型具有url属性,我正在使用它来动态安装端点。我需要能够对它们进行版本化,并且在生成它们时无法正确命名它们。

如果我在模块中创建一个类,那么该类是命名空间。

react-router

但是,如果我动态地在模块中创建类,则它不是命名空间。

module MyModule
  module SubModule
    class MyClass
    end
  end
end
=> nil 
MyModule::SubModule::MyClass
=> MyModule::SubModule::MyClass 

有没有办法命名动态创建的类?

1 个答案:

答案 0 :(得分:1)

Object.const_set在Object名称空间中显式设置常量,该名称空间是根名称空间。如果您使用const_set而不使用Object,则会在当前命名空间中设置常量,在您的示例中为MyModule::SubModule