我是ruby的新手,我正在和IRB打交道.

我发现我可以用".methods"方法列出一个对象的方法,还有那个self.方法给了我想要的(类似于Python的dir(builtins),但我如何找到通过include和require加载的库/模块的方法呢?

irb(main):036:0* self.methods
=> ["irb_pop_binding", "inspect", "taguri", "irb_chws", "clone", "irb_pushws", "public_methods", "taguri=", "irb_pwws",
"public", "display", "irb_require", "irb_exit", "instance_variable_defined?", "irb_cb", "equal?", "freeze", "irb_context
", "irb_pop_workspace", "irb_cwb", "irb_jobs", "irb_bindings", "methods", "irb_current_working_workspace", "respond_to?"
, "irb_popb", "irb_cws", "fg", "pushws", "conf", "dup", "cwws", "instance_variables", "source", "cb", "kill", "help", "_
_id__", "method", "eql?", "irb_pwb", "id", "bindings", "send", "singleton_methods", "popb", "irb_kill", "chws", "taint",
 "irb_push_binding", "instance_variable_get", "frozen?", "irb_source", "pwws", "private", "instance_of?", "__send__", "i
rb_workspaces", "to_a", "irb_quit", "to_yaml_style", "irb_popws", "irb_change_workspace", "jobs", "type", "install_alias
_method", "irb_push_workspace", "require_gem", "object_id", "instance_eval", "protected_methods", "irb_print_working_wor
kspace", "irb_load", "require", "==", "cws", "===", "irb_pushb", "instance_variable_set", "irb_current_working_binding",
 "extend", "kind_of?", "context", "gem", "to_yaml_properties", "quit", "popws", "irb", "to_s", "to_yaml", "irb_fg", "cla
ss", "hash", "private_methods", "=~", "tainted?", "include", "irb_cwws", "irb_change_binding", "irb_help", "untaint", "n
il?", "pushb", "exit", "irb_print_working_binding", "is_a?", "workspaces"]
irb(main):037:0>

我已经习惯了python,我使用dir()函数来完成同样的事情:

>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>>

推荐答案

ObjectSpace.each_object可能就是你想要的.

要获得包含的模块列表,可以使用Module.included_modules个.

您还可以使用object.respond_to?判断对象是否根据具体情况响应方法.

Ruby相关问答推荐

这是一个很好的测试?规范

是否有类似于 Ruby 的 Sinatra 的 .NET 框架?

查看 Savon 请求 XML 而不发送到服务器

这些 Ruby 命名空间约定之间有什么区别?

在 Ruby 中覆盖 == 运算符

ruby:对两个或多个数组的对应成员求和

如果浮点组件不是 .00 sprintf/printf,则仅显示小数点

Ruby 在与源相同的目录中加载配置(yaml)文件

在 Ruby 早期转义 .each { } 迭代

如何从正在运行的脚本进入 IRB 提示符?

在 Ruby 中创建数字、字符串、数组或哈希的 md5 哈希

Rails - create and create!

Ruby中的每个块都可以有一行吗?

Ruby 数组中的奇数(或偶数)条目

在命名包含多个单词的Ruby 时,是否应该使用破折号或下划线?

如何使用 RVM 更新 Ruby 解释器?

to_proc 方法是什么意思?

如何按字母顺序对字符串字符进行排序?

Ruby 哈希白名单过滤器

Rubocop 25 线块大小和 RSpec 测试