我正在使用以下模块创建用于对Rails应用程序进行版本控制的API:
Module Api
Module V1
Controller goes here
end
end
Module Api
Module V2
Controller goes here
end
end
我想知道最新版本。我想我可以通过查看Api.constants
得到它,但是这似乎并非如此,因为我得到一个空数组,如下所示:
Loading development environment (Rails 3.2.12)
irb(main):001:0> Api
=> Api
irb(main):002:0> Api.constants
=> []
但是,如果我先直接拨打Api::V1
,它似乎有效:
Loading development environment (Rails 3.2.12)
irb(main):001:0> Api
=> Api
irb(main):002:0> Api.constants
=> []
irb(main):003:0> Api::V1
=> Api::V1
irb(main):004:0> Api.constants
=> [:V1]
有没有办法在不事先访问它们的情况下获取所有子模块?
答案 0 :(得分:5)
这是在工作时自动加载。 Api::V1
在被引用之前未加载。这就是你在第一种情况下获得空数组的原因。
您可以调整应用以急切加载课程。在此处查看更多信息:Configuring Rails。