Скажем, у меня есть следующая структура:
module Library
class DSL
def met(str)
# load `str` here; for this case, `MyApplication::MyClass`
end
end
class Superclass
extend DSL
end
end
module MyApplication
class MySubclass < Library::Superclass
met 'MyClass'
end
class MyClass
end
end
Внутри Library::DSL#met
Мне нужно загрузить константу str
, которая предоставляется в виде строки.Очевидно, это не сработает, если я просто сделаю Object.const_get(str)
.
Мне нужно каким-то образом полностью разрешить str
в контексте текущей области (MyApplication::MySubclass
);str
будет, следовательно, разрешен как MyApplication::MyClass
.Мне нужно полностью решить эту проблему, потому что позже мне нужно использовать эту константу вне этого пространства имен.