如何递归地查找模块中的所有模块和类?

2023-11-24

如果你有:

module A
  class B
  end
end

您可以通过 A.constants 找到 B 和类似的类。但是,在 Ruby 1.9.3 中,如果 B 在另一个模块中,则无法获取 B。在 Ruby 1.8.7 中您可以。

module A
  module Aa
    class B
    end
  end
end

如何从第一级 A 获得 B?我想要的输出是一个常量数组,其中包括 B 等所有类,但位于模块 A 内的任何位置。


class Module
  def all_the_modules
    [self] + constants.map {|const| const_get(const) }
      .select {|const| const.is_a? Module }
      .flat_map {|const| const.all_the_modules }
  end
end

A.all_the_modules
# => [A, A::Aa, A::Aa::B]

如果您确实有循环命名空间,则此代码将会中断,又名A::Aa::B.const_set(:A, A).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何递归地查找模块中的所有模块和类? 的相关文章

  • 平衡付款 - 有关获取现有买家和商家账户参考信息的文档

    我如何获得已创建的买家和商家帐户的参考 我只是找到创建买家和商家帐户的示例 我没有找到任何有关获取该信息以供重用的示例 是否有关于此的现有文档或只是 rdoc 中的内容 根据对 rdoc 的引用 我假设您在这里使用 Ruby gem 使用唯
  • 从轨道控制器返回

    这是一个初学者 Rails 问题 我这样做之后 format xml head ok 如何从控制器端点返回而不显示视图 如果我此时放弃函数的末尾 我会得到我所期望的结果 但如果我调用 返回 我最终会进入视图 或者在我的情况下会出现缺少的视图
  • 匹配一对未转义的平衡分隔符

    如何匹配一对不被反斜杠转义的平衡分隔符 本身不被反斜杠转义 无需考虑嵌套 例如 对于反引号 我尝试了此操作 但是转义的反引号无法按转义的方式工作 regex lt lt hello how are you gt 1 how expected
  • 日期时间到 NSDate

    如何转换字符串2010 11 19T20 00 00Z进入一个NSDate object 我尝试过使用 dateFormatter setDateFormat yyyy MM ddTHH mm ssZ 但看起来我的自定义格式样式错误 PS
  • Rails 3:用户创建自定义表单?

    我正在尝试思考如何允许用户创建具有所有字段类型的自定义表单 如果有一颗宝石那就太好了 但我似乎无法在任何地方找到它 所以我有一个像这样的数据库设置 t integer form id t string name t string hint
  • 在 RSpec 测试期间抑制控制台输出

    我正在测试在控制台上放置一些消息的类 包含 put p 警告等 我只是想知道在 RSpec 测试期间是否有能力抑制此输出 我压抑puts通过重定向在我的类中输出 stout到一个文本文件 这样 如果我出于任何原因需要查看输出 它就在那里 但
  • Rails:验证字符串的最小和最大长度,但允许其为空白

    我有一个想要验证的字段 我希望该字段能够留空 但如果用户输入数据 我希望它采用某种格式 目前我在模型中使用以下验证 但这不允许用户将其留空 validates length of foo maximum gt 5 validates len
  • 如何在保存父对象时确保子对象有效?

    假设我有两堂课 class User attr accessible name has one address validates name presence gt true validates associated address end
  • postgres 数组字段上的 ActiveAdmin 过滤器

    我在 ActiveAdmin 中添加了以下过滤器 filter roles as select collection Model ROLES multiple true 但是当我选择过滤器值来搜索角色时 它给了我以下错误 PG Invali
  • 什么时候需要将参数传递给“Thread.new”?

    在线程外部定义的局部变量似乎从内部可见 因此以下两种用法Thread new似乎是一样的 a foo Thread new puts a gt foo Thread new a a puts a gt foo The document ht
  • 默认更新嵌套属性

    我尝试更新 iProduction 这是生产中的嵌套表单 但此行出现参数错误 参数数量错误 0 代表 1 生产 update iproducts attributes cow id cow 我的创作动作制作 def create produ
  • 如何将可求和指标压缩为 ruby​​ 表中的唯一标识符

    我正在尝试将可求和指标压缩为 ruby 表中的唯一标识符 我有下表 id1 123 id2 234 id1 345 压缩指标最有效的方法是什么 使其看起来像这样 id1 468 id2 234 我认为其他回答者想太多了 您只需一次操作即可完
  • 在 Rails ActiveAdmin 视图中添加指向 Flash 通知的链接

    我正在尝试在活动管理控制器成功创建操作的闪存消息中添加链接 但是该链接的 HTML 被转义并在视图上显示为纯文本 Rails 5 2 1 ruby 2 5 3p105 2018 10 18 修订版 65156 x86 64 linux 例如
  • 有没有办法让 Ruby 临时文件永久存在?

    如果我通过创建了一个临时文件Tempfile 除了将其复制到另一个文件之外 还有什么方法可以使其 永久 吗 我想避免它在关联时被删除Tempfile实例被垃圾收集或进程被终止 在相关的一点上 有没有办法利用Tempfile机制 或使用类似的
  • 使用 Devise 和 Rails 从 Twitter Oauth 获取电子邮件

    我已经设置了一个基本的 Rails 应用程序来使用 twitter oauth gem 和设计 并且已经能够登录用户 但是 我的问题是我现在已将我的应用程序列入白名单 并且我想在响应中收到用户的电子邮件 我已遵循 Twitter 端的所有必
  • Rails 应用程序在模型间保存方面遇到问题

    我正在开发一个从网站下载元标签并然后保存的应用程序 下载发生在一个名为Site 我想将下载的机器人元标签保存到一个名为的模型中robots tag它通过一个名为的连接表连接到站点meta tag sites 但是我在站点模型中编写的用于执行
  • i18n:特定型号的错误消息本地化

    我可以为每个验证本地化错误消息 但如何为特定模型创建错误 普通的语言环境如下所示 en mongoid errors messages taken It is already taken 但我想更改消息user model en mongo
  • 如何使用 rspec 测试条件 ActiveRecord after_update 回调?

    我有一个触发作业的条件回调 如果经理发生变化 则应调用该方法 class Employee lt ActiveRecord Base after update employee manager on change if employee i
  • Ruby 模板:如何将变量传递到内联 ERB 中?

    我有一个内联到 Ruby 代码中的 ERB 模板 require erb DATA a gt HELLO b gt WORLD template ERB new lt lt EOF current key is current value
  • 了解 Ruby 的加载路径

    我有点困惑为什么我的项目无法加载它需要的文件 这是一个非常简单的项目树 processor bin lib processor rb processor mapper rb reducer rb and my processor rb文件看

随机推荐

  • 如何仅在选中复选框时显示输入字段?

    基本上 我只想在选中复选框时显示这些字段 如果未选中该字段 则消失
  • Mockito:模拟私有字段初始化

    如何模拟正在内联初始化的字段变量 class Test private Person person new Person public void testMethod person someMethod 这里我想嘲讽一下person som
  • elasticsearch 分析器 - 小写和空格分词器

    如何创建一个映射来标记空格上的字符串并将其更改为小写以进行索引 这是我当前的映射 它通过空格进行标记 我无法理解如何将其小写并搜索 查询 相同的 mappings my type properties title type string a
  • CoreNFC 用于卡模拟?

    iOS 11 SDK 中引入了 CoreNFC CoreNFC 可以用于 iOS 上的智能卡模拟吗 Apple CoreNFC 文档 对于智能卡仿真 我们需要send通过 NFC 模块读取卡的数据 如 PAN CVV2 根据 Apple 的
  • 使用 testbook 测试 Jupyter 笔记本单元时如何修补 input()?

    我参与的一个项目使用testbook测试 Jupyter Notebook 的代码单元 Patching工作正常 除非要测试的代码要求用户输入input 我只是不知道如何正确修补它 使用的版本 Python 3 8 10 测试手册 0 4
  • Pandas DataFrame 到 Excel:索引的垂直对齐

    给定以下数据框 将 pandas 导入为 pd d pd DataFrame a a a b b b a b c d c 1 2 3 4 d d groupby a b sum d 我想以相对于索引相同的对齐方式导出它 看看最左边的列如何垂
  • 使用 cypress 命令验证下载文件(PDF/Word/Excel)的数据

    我有一种情况 我必须使用 Cypress 命令验证下载文件的数据 文件类型 pdf Word Excel 我有被调用的服务器 API 操作的 URL 作为响应 它返回 pdf 文件 我需要使用 Cypress 命令和 Typescript
  • targetNamespace 和 xmlns

    这一页w3学校给出 以下是模式声明的一种形式
  • 错误:使用无法解析的标识符“kCGBlendModeMultiply”

    我最近更新到了 Xcode 7 beta 3 我遇到了一些问题 我似乎找不到任何问题 当我运行我的应用程序时 我收到 3 个错误 使用未解析的标识符 kCGBlendModeMultiply 使用未解析的标识符 kCGLineCapRoun
  • Java 相当于 C++ std::map?

    我正在寻找一个具有 C std map 通常实现特征的 Java 类 据我所知 是一个自平衡二叉搜索树 插入 删除 搜索的 O log n 性能 每个元素由唯一的键和映射的值组成 键遵循严格的弱排序 我正在寻找开源或设计文档的实现 我可能最
  • Tomcat 7 中的表达式语言跳过标识符检查

    我收到以下错误 SEVERE Servlet service for servlet jsp threw exception javax el ELException The identifier case is not a valid J
  • Spring中的自动配置重新初始化

    在 Log4j 中 有一个功能可以将系统初始化为按时间间隔进行配置和监视 这允许 log4j 系统在属性文件更改时重新加载其属性 spring框架是否有这样的配置观察器设施 其中配置更改时会重新加载 需要重新加载的Configuration
  • Discord.js - 获取用户上次活动?

    我试图找出是否可以使用追溯方式获取用户上次活动的时间 信息discord js 说我有类似的东西 client guilds find id SERVER ID fetchMembers then members gt const role
  • 如何更改videojs控制栏元素顺序的位置

    我的网站使用 video js 播放器 我想更改控制栏元素的位置 目前 它显示播放 暂停 音量 进度条和全屏 我怎样才能更改订单 我的代码如下 var videojs videojs video player techOrder youtu
  • 如何阻止软键盘调整 Android 手机上 Chrome 浏览器窗口的大小?

    我看到这个问题被问到here here and here 但找不到明确和 或可行的答案 我在 Samsung A7 2018 上使用 Android 9 运行 Chrome 75 会发生什么 我有一个需要键盘输入的 html 表单 当在 C
  • JBoss 文件打开过多错误

    就在上周 我在访问 JBoss v 4 2 2 Web 应用程序时遇到了问题 当我转到主页时 我收到 java lang NullPointerException 错误页面 查看 JBoss 日志输出后 似乎打开了太多文件 那么我该如何关闭
  • 读取 Unicode 文件 C++

    我有一个简单的问题要问 我有一个以 FFFE 开头的 UTF 16 文本文件要读取 有哪些C 工具可以处理这种文件 我只想阅读它 过滤一些行 然后显示结果 它看起来很简单 但我只有处理普通 ascci 文件的经验 而且我很着急 我正在使用
  • 同步单例的正确使用?

    所以我正在考虑建立一个业余爱好项目 这是一种临时性的事情 只是为了温习我的编程 设计 它基本上是一个多线程网络蜘蛛 更新相同的数据结构object gt int 因此 为此使用数据库绝对是大材小用 我唯一能想到的是用于包含我的数据结构的线程
  • mysql:使用SET还是很多列?

    我正在使用 PHP 和 MySQL 我有以下记录 具有各种分层 事件类型 的事件 事件可以有多个类别和子类别 但此类类别和子类别的数量是固定的 带时间戳 设置桌子的最佳方式是什么 我是否应该有一堆列 30 左右 其中包含表示是或否的枚举 指
  • 如何递归地查找模块中的所有模块和类?

    如果你有 module A class B end end 您可以通过 A constants 找到 B 和类似的类 但是 在 Ruby 1 9 3 中 如果 B 在另一个模块中 则无法获取 B 在 Ruby 1 8 7 中您可以 modu