如何获取 Ruby gem 中方法的文档?

How to get documentation for a method in a Ruby gem?

我正在尝试了解 cancancan gem 使用的 can? 方法。

我尝试了 here,但找不到方法 can?:

按照建议 here,我尝试了这些:

can?.arity
NoMethodError: undefined method `can?' for main:Object

can?.parameters
NoMethodError: undefined method `can?' for main:Object

我只是想找出 can?(视图中使用的 cancancan 方法)想要接收的参数,但是这个示例是学习如何为其他方法执行此操作的好机会好吧,因此我希望有一个通用的解决方案(一个允许我查找文档的方法,而不是在这个特定示例中询问的方法)。

在此先感谢所有 help/pointers!

最简单的方法是在 the site you linked 的搜索栏中输入 can?,它会给出以下两个结果:

不是答案,只是在另一个论坛上告诉我的一些提示:

  • 并不是每个 ruby gem 方法都会有每个方法的文档,所以不要期望每个 gem
  • 都会找到每个方法的文档
  • 尝试查找源代码(例如 github),并在特定的存储库中搜索方法名称,并在前面加上双引号 def 。即:

转到 github 存储库,然后转到搜索栏(左上角),然后像这样搜索(搜索时 select“在此存储库中”)

这将给出 these 个搜索结果:

并且我们可以看到定义的方法here:

Jörg 的回答是正确的,但我还想展示一些查找方法源代码的替代方法:

  1. 使用 show-source 来自 Pry gem:

    show-source CanCan::Ability#can?
    

    当然,要做到这一点,您需要知道该方法是在 CanCan::Ability 上定义的。要找到该信息,您可以使用 <my_record>.method(:own?).owner.

  2. 在Ruby核心使用source-location

    您可以使用 <record>.method(:own?).source_location - 这会告诉您定义该方法的文件以及行号,因此您可以在文本编辑器中打开它进行检查

作为使用外部站点的替代方法,您可以从命令行尝试 ri

ri "can?"

当您安装 gem 时,ri 文档(通常)也会安装。 ri 命令行工具将在已安装的 gem 文档中搜索与您的输入相匹配的方法和常量并显示它们。

由于它在本地运行,因此当您手边没有互联网连接时,这可能是一个很好的资源!