ruby - 如何检查模块

标签 ruby

如何找出模块中定义的结构(方法、常量等)?

假设有 require 'observer',我想查看在 'observer' 中定义的所有内容。我该怎么办?

最佳答案

简短的回答:你不能,不能绝对肯定。

长答案:这是 Ruby 本质上是一种非常动态的语言的产物,几乎没有对 require 语句可能做的事情施加任何限制。一个库可以创建任意数量的模块和类,并且不需要将它们整齐地组合在一起。

即使您在需要之前对所有已定义的类和方法进行快照,然后再进行另一个快照以找出添加的内容,也无法保证您已经捕获了所有这些类和方法。在 require 语句完成后,一些类可能会被加载或定义。

找出答案的最佳方法是通读源代码。在那里,您会看到所有可以定义的不同模块和类,即使它们不是由您的代码触发的。

methods 这样的反射(reflection)工具在一定程度上有所帮助,但它也具有很大的误导性。方法可以在以后的某个时间点定义,您可能需要更彻底地练习代码才能显示它们。

关于ruby - 如何检查模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341725/

相关文章:

ruby-on-rails - 在 mongoid.yml 中指定认证数据库

java - 将 Ruby 代码片段翻译为 Java

ruby - 尝试在 Ruby 中设置实例变量

mysql - 使用 Ruby 插入二进制数据的 SQL 查询

ruby-on-rails - Rails 日期晚于

ruby - rake 任务有 "method_missing"吗?

ruby - 学习 Ruby 语法的最官方文档或方法是什么?

ruby-on-rails - rspec 失败 "Missing host to link to!..."

Ruby 类与结构

ruby-on-rails - 如何使用 GraphQL 获取所有用户模型