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

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(使用前将#替换为@)

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

  • Rails 3.2.3 命名空间控制器被同名的全局控制器覆盖

    当全局应用程序控制器首先加载时 命名空间应用程序控制器在加载该命名空间内的页面时不会加载 应用程序控制器如下所示 class ApplicationController lt ActionController Base protect fr
  • Sinatra 启用:会话不适用于乘客/apache

    我在启用 sessions 时遇到问题 以维持在 guest apache 上托管的简单 Sinatra 应用程序 我将会话 authorized 的状态存储在cookie 中 当托管在 Rack Handler Mongrel 上时 它可
  • 如何在 rake 任务中强制使用 RAILS_ENV?

    我有这个小耙子任务 namespace db do namespace test do task reset do ENV RAILS ENV test Rake Task db drop invoke Rake Task db creat
  • Rails 删除方法不起作用

    好吧 我在 Ruby on Rails 中的删除方法上遇到了这样的问题 我想 我尝试了我读过的所有内容 但它不起作用 也许你可以帮助解决这个问题 当我单击链接时 它会重定向到患者 1 confirm Are you sure 3F meth
  • 用 ruby​​ 中的数组内容替换字符串?

    String Test string Test array link1 link2 如何替换这样的字符串 输出应该是String link1 string link2 字符串 gsub 可以返回一个枚举器 所以这很简单 string gsu
  • 如何运行使用 Rails 模型的 Ruby 任务?

    我有一个带有一些基本模型的 Rails 应用程序 该网站显示从其他来源检索到的数据 因此 我需要编写一个 Ruby 脚本来在数据库中创建新实例 我知道我可以使用测试挂钩来做到这一点 但我不确定这在这里是否有意义 我不确定这个任务应该是什么样
  • Rails 返回 JSON 序列化属性 with_in Different_access

    我以前有 serialize params JSON 但这会返回 JSON 并将哈希键符号转换为字符串 我想使用符号引用哈希 这在使用哈希时最常见 我向它提供符号 Rails 返回字符串 为了避免这种情况 我创建了自己的 getter se
  • close 似乎不适用于 WebSocket

    我有这个简单的 JavaScript 代码 window ws new WebSocket ws 127 0 0 1 8000 ws onopen function ws send hello Ruby 中的服务器如下所示 require
  • 如何检查rails上传的文件类型?

    我如何查看即将到来的文件类型 例如 csv 或 xls 请给个代码 我得到文件是这样的 aut name uploaded io original filename File open Rails root join public uplo
  • BigDecimal 无法强制转换为 BigDecimal

    这应该很简单 但它却爆炸了 有任何想法吗 d BigDecimal new 2 0 YAML load a gt d to yaml TypeError BigDecimal can t be coerced into BigDecimal
  • Ruby on Rails 最酷的功能是什么,为什么选择它? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我问这个问题之前 我浏览了 SO 上 Ruby on Rails 的搜索结果 找不到太多 但以下 在此页面上找到 https stackove
  • gem install rmagick 在 OS X El Capitan 上失败

    几天前我升级到 El Capitan 并运行了 brew update brew upgrade 它更新了 imagemagick 导致 ruby 的 rmagick gem 停止工作 我想没问题 我就跑 gem install rmagi
  • (在 Ruby 中)允许混合类方法访问类常量

    我有一个为其定义常量的类 然后我定义了一个类方法来访问该类常量 这很好用 一个例子 usr bin env ruby class NonInstantiableClass Const hello world class lt lt self
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • 在 ruby​​ 中读/写受密码保护和加密的文件

    我想加密一个 ruby 程序将从中加载数据的文件 此外 我需要程序在启动时提示输入密码 该密码将用于解密文件 换句话说 该文件需要加密地驻留在计算机上 只有拥有密码的用户才能运行该应用程序 我已经开始研究 openpgp 但据我了解 这仍然
  • 使用 YAML.load 解析 json 安全吗?

    我使用的是红宝石2 1 0 我有一个 json 文件 例如 测试 json item apple 1 banana 2 使用 YAML load 加载此文件是否安全 YAML load File read test json 我正在尝试加载
  • 使用复选框过滤列表

    我有一个电影列表及其评级 在我的页面顶部 我有一个表单 其中提供了一个复选框列表 其中显示了每个可用的评级 G PG 13 等 一旦用户单击复选框并点击提交 我只想显示所选的电影 在我的索引方法中 我有一个名为的实例变量 filtered
  • 有没有可以在 HTML 文档之间进行比较的 ruby​​ gem?

    事实证明 对两个不同的 html 文档进行比较是一个完全不同的问题 而不仅仅是对纯文本进行比较 例如 如果我在以下之间进行简单的 LCS 差异 Google and Google diff 结果不是 but a gt github com
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除

随机推荐

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

    基本上 我只想在选中复选框时显示这些字段 如果未选中该字段 则消失
  • 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