2016-10-03 13 views
2

私のRailsプロジェクトでは、モジュール内にネストされているすべてのモジュールを取得したいと考えています。ARuby on Rails:ネストされたモジュールを取得しますか?

A.constants 
    => [] 
A::B.class 
    => Module 
A.constants 
    => [:B] 

なぜ空の配列を返す最初の行、及び方法:レールコンソールで

module A 
    module B 
    end 
end 

ファイルLIB /資産/ A/b.rbは、から成り私は問題を丸めるのですか?

答えて

0

これは、Railsの自動読み込みがどのように機能するかによるものです。

A.constantsを呼び出すと、ファイルにAというファイルがあり、そこに定義されている定数が得られます。そこに定数を定義していないようですが、それは空の配列です。

A::B.classと呼ぶと、RailsのオートローディングはA::Bとなり、ロードはa/b.rbとなります。したがって、次にA.constantsを呼び出すと、a.rba/b.rbの両方で定義されている定数が返されます。両方のファイルがロードされます。それで、それはBを2回目に返します。

したがって、問題は解決できません。これは、Railsの自動ロードがどのように機能するかによって引き起こされると予想されます。

また、あなたのモデルはlib/assets/であると言いますが、これは違いはありません。models/であれば同じです。

+0

私は恐れています.a.rbファイルがないので、これは答えではありません。私がRailsコンソールでやったことを複製するために必要なことはすべて問題です(フォルダ 'a'、図のように 'b.rb'というファイル)。 –

関連する問題