我在文件Bar
中有一个Ruby类models/bar.rb
:
class Bar
end
我的主程序文件中有一个Ruby模块Foo
:
module Foo
end
我想要/ load / autoload Bar
,使其在Foo
下命名,即:
module Foo
autoload :Bar, 'models/bar.rb'
end
fb = Foo::Bar.new # yay!
但是,require / load / autoload找到的实体附加到全局命名空间。为了实现这一点,我必须编辑models/bar.rb
并将该课程包装在module Foo
.. end
中。有没有办法做到这一点,而不必这样做?
答案 0 :(得分:0)
没有。在正常文件加载下这是不可能的。 (如果您将文件models/bar.rb
不是作为Ruby代码而是作为字符串读取,然后instance_eval
读取Foo
中的字符串,那么它就有可能。)