ruby - 自动加载命名空间/子模块

标签 ruby autoload

我在 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/

相关文章:

php - PSR-4 自动加载不工作

ruby - if 语句和 unless 语句之间的主要区别是什么?

ruby-on-rails - 将 XML 转换为 Ruby 哈希时保留属性

ruby - Sinatra-assetpack 无法在经典类型 Sinatra 应用程序中编译 Less 文件

php - 如何在php中加载类

codeigniter - 如何在 codeigniter 4 中自动加载自制的配置文件?

ruby - 如何在 Ruby 中为静态方法设置别名?

ruby-on-rails - 更改 JSON 格式

namespaces - 从带有 force 选项的命名空间导入 procs 后,全局命名空间中的 procs 在某些条件下由 auto_load 使用

php - 将 Composer 的自动加载器与个人代码一起使用