模块的子模块列表

时间:2013-03-18 10:01:59

标签: ruby

我正在使用以下模块创建用于对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]

有没有办法在不事先访问它们的情况下获取所有子模块?

1 个答案:

答案 0 :(得分:5)

这是在工作时自动加载。 Api::V1在被引用之前未加载。这就是你在第一种情况下获得空数组的原因。

您可以调整应用以急切加载课程。在此处查看更多信息:Configuring Rails