2015-09-25 35 views
0

我有一個Ruby類Bar在文件models/bar.rb將包含的類附加到名稱空間?

class Bar 
end 

在我的主程序文件一個Ruby模塊Foo

module Foo 
end 

我想需要/負載/自動加載Bar這樣它的名稱空間爲Foo,即:

module Foo 
    autoload :Bar, 'models/bar.rb' 
end 

fb = Foo::Bar.new # yay! 

但是,require/load/autoload找到的實體被附加到全局名稱空間。爲了這個工作,我必須編輯models/bar.rb幷包裝類module Foo .. end。有沒有辦法做到這一點,而不必這樣做?

+1

不知道我錯過了一個多小時的瘋狂谷歌搜索。謝謝@brito! – mwp

+1

請注意,banister對brito鏈接的接受答案只能使其他模塊可以訪問模塊,並且它們實際上不包含在名稱空間中。它與具有默認值的散列可以爲不存在該鍵值的不存在的鍵提供值的情況類似。 – sawa

回答

0

不,在正常的文件加載下這是不可能的。 (如果您讀取文件models/bar.rb不是Ruby代碼而是字符串,然後instance_eval字符串在Foo,那麼這是可能的。)

相關問題