目前我的代码中有这个结构:
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 :(得分: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
答案 1 :(得分:0)
我认为这个解决方案更紧凑:
[Mappers, Mappers::Login, Mappers::Admuser, Mappers::Admsubdevice, Mappers::Admdevice].each do |m|
m.extend ActiveSupport::Autoload
end