出于某种原因,我想使用命名空间的类/模块,因为它们位于IRB的全局命名空间中。
例如,我在其中有模块MyCore
和类MyUser
。是否有任何机制或挂钩让IRB以MyCore::MyUser
的方式包含MyUser.new
,而不用MyCore
作为前缀?
答案 0 :(得分:4)
你可以简单地做
include MyCore
myUser = MyUser.new
使用include
将模块中的所有常量添加到当前类中。
class WhereIWantToIncludeMyCore
include MyCore
def initialize
user = MyUser.new
end
end
如果您希望能够无处不在,则可以将其添加到class
的范围之外,Object
将其包含在{{1}}中。
答案 1 :(得分:0)
您可以执行类似
的操作MU = MyCore::MyUser
并使用您为后续调用定义的别名。
答案 2 :(得分:0)
你可以随时
MyUser = MyCore::MyUser
如果您想获得所有包含的模块/类:
MyCore.constants.each do |const|
Object.const_set(const, MyCore.const_get(const))
end
答案 3 :(得分:0)