Ruby: Как включить классы пространства имен в глобальное пространство имен в IRB
Почему-то я хочу использовать классы / модули пространства имен, так как они находятся в глобальном пространстве имен в IRB.
Например, у меня есть модуль MyCore
и класс MyUser
внутри него. Есть ли механизм или крючок для IRB, чтобы включить MyCore::MyUser
таким образом, я могу назвать просто MyUser.new
без префикса с MyCore
?
4 ответа
Вы можете просто сделать
include MyCore
myUser = MyUser.new
С помощью include
добавляет все константы в модуле к вашему текущему классу.
class WhereIWantToIncludeMyCore
include MyCore
def initialize
user = MyUser.new
end
end
Если вы хотите делать это везде, вы можете добавить его за пределы class
, который будет включать его в Object
,
Вы всегда можете сделать
MyUser = MyCore::MyUser
Если вы хотите получить все включенные модули / классы:
MyCore.constants.each do |const|
Object.const_set(const, MyCore.const_get(const))
end
Вы могли бы сделать что-то вроде
MU = MyCore::MyUser
и использовать псевдоним, который вы определили для последующих вызовов.