0

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

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

4

1 回答 1

5

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

您可以调整您的应用程序以急切地加载类。在此处查看更多信息:配置 Rails

于 2013-03-18T10:03:45.463 回答