2013-03-06 48 views
0

目前我有這種結構在我的代碼:怎麼幹很多模塊的擴展

module Mappers 
    extend ActiveSupport::Autoload  
    ... 

    module Login 
    extend ActiveSupport::Autoload 
    ... 
    end 

    module Admuser 
    extend ActiveSupport::Autoload 
    ... 
    end 

    module Admsubdevice 
    extend ActiveSupport::Autoload 
    ... 
    end 

    module Admdevice 
    extend ActiveSupport::Autoload 
    ... 
    end 
end 

我有擴展的每個模塊使用自動加載功能。

有沒有辦法擴展模塊只有一次有這個功能?

回答

0

我認爲這個解決方案是更緊湊:

[Mappers, Mappers::Login, Mappers::Admuser, Mappers::Admsubdevice, Mappers::Admdevice].each do |m| 
    m.extend ActiveSupport::Autoload 
end 
1
def module_with_autoload &proc 
    Module.new{extend ActiveSupport::Autoload ; proc.call} 
end 

Mappers = module_with_autoload do 
    ... 

    Login = module_with_autoload do 
    ... 
    end 

    Admuser = module_with_autoload do 
    ... 
    end 

    Admsubdevice = module_with_autoload do 
    ... 
    end 

    Admdevice = module_with_autoload do 
    ... 
    end 
end