0

ネストされたモジュールでモジュール定数にアクセスできません。コードは次のとおりです。

アウター.rb

require 'inner.rb'

module Outer
  BASE_DIR = "cache/"
end

inner.rb

module Outer
  module Inner
    puts BASE_DIR
  end
end

inner.rb でコードを実行すると、次のエラーが発生します。

<module:Inner>': uninitialized constant Outer::Inner::BASE_DIR (NameError)

外側のモジュールで BASE_DIR が宣言されているので、内側のモジュールでもアクセスできるはずだと思いましたが、そうではないようです。

4

2 に答える 2

0

いいえ、ルビーはそれをしません。名前を解決するために ruby​​ が使用する祖先チェーンを探してください。

Outer::BASE_DIRそのため、代わりに使用する必要があります。

ここでは、Ruby クラス システムと Rails オート ローディングについての素敵な話があります。

于 2013-10-21T05:53:49.493 に答える