Я использую модули в качестве пространств имен в рубине. Как я пошел бы об автозагрузке... чего-то как autoload :"App::ModuleA", 'app/module_a
это не бросает, "должно быть постоянное имя" ошибка?
Вам нужно передать символ в автозагрузку
(возможно, это опечатка в вашем вопросе) и вызвать его для родительского элемента константы, например:
App.autoload :ModuleA, "app/module_a"
Обратите внимание, что это работает и для вложенных уровней. Предположим, что в app / module_a
у вас есть:
module App::ModuleA
autoload :Inner, "path/to/inner"
end
Когда Ruby встречает App :: ModuleA :: Inner
, он сначала пытается получить доступ к ModuleA
, успешно путем автозагрузки, и только потом попытаться Inner
, что будет успешным еще и потому, что теперь знает, куда его автозагрузить.