我在 ruby 中使用模块作为命名空间。我将如何进行自动加载...类似 autoload :"App::ModuleA", 'app/module_a
的东西不会引发“必须是常量名称”错误?
最佳答案
您需要将一个符号传递给 autoload
(可能是您问题中的错字),并在常量的父级上调用它,例如:
App.autoload :ModuleA, "app/module_a"
请注意,这也适用于嵌套级别。假设在 app/module_a
中你有:
module App::ModuleA
autoload :Inner, "path/to/inner"
end
当 Ruby 遇到 App::ModuleA::Inner
时,它会首先尝试访问 ModuleA
,通过自动加载成功,然后才尝试访问 Inner
,这也成功了,因为它现在知道在哪里自动加载它。
关于ruby - 自动加载命名空间/子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2959990/