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 に答える