2013-03-06 46 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