gpt4 book ai didi

ruby - 如何在不手动加载类的情况下获取命名空间中的所有类?

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:52 28 4
gpt4 key购买 nike

我正在寻找一种方法来列出模块(命名空间)内定义的所有类。这是关于该问题的类似问题: How to get all class names in a namespace in Ruby?

但是看到最后的回复,Module.constants 是空的,直到类被调用/加载。有没有办法在不手动引用每个类的情况下做到这一点?

我正在尝试在 Rails 3.2 中使用此功能,我发现的唯一方法是在初始化程序中要求每个类(没有尝试过,但它仍然需要手动输入...)。

提前感谢您的宝贵时间。

最佳答案

您可以像这样将命名空间目录中的文件 glob:

Dir.glob('/path/to/namespaced/directory/*').collect{|file_path| File.basename(file_path, '.rb').constantize}

所以在 Rails 初始化文件或模型中你可以这样做:

Dir.glob(File.join(Rails.root, "app", "models", "my_namespace", "*")).collect{|file_path| File.basename(file_path, '.rb').constantize}

关于ruby - 如何在不手动加载类的情况下获取命名空间中的所有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13358190/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com