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

问题描述

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

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

enter image description here

根据建议here,我尝试了以下操作:

can?

我只是想找出can?.arity NoMethodError: undefined method `can?' for main:Object can?.parameters NoMethodError: undefined method `can?' for main:Object (视图中使用的cancancan方法)想要接收的参数,但是这个示例也是学习如何对其他方法执行此操作的好机会,因此,我希望有一种通用的解决方案(一种解决方案,使我可以查找有关此特定示例所要求的方法以外的方法的文档)。

提前感谢所有帮助/指针!

解决方法

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

ri "can?"

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

由于它在本地运行,因此当您没有方便的Internet连接时,这可能是一个很好的资源!

enter image description here

,

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

,

不是答案,而只是在另一个论坛中被告知的一些提示:

  • 并非每个ruby gem方法都会有每种方法的文档,所以不要指望为每种gem找到每种方法的文档
  • 尝试查找源代码(例如github),并在特定存储库中搜索以def 开头的双引号的方法名称。那就是:

转到github存储库,然后转到搜索栏(左上方),然后进行搜索(并在搜索时选择“在此存储库中”)

enter image description here

这将提供these个搜索结果:

enter image description here

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

enter image description here

,

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

  1. 使用Pry gem中的show-source

    show-source CanCan::Ability#can?
    

    当然,要执行此操作,您需要知道该方法是在CanCan::Ability上定义的。要查找该信息,可以使用<my_record>.method(:own?).owner

  2. 在Ruby核心中使用source-location

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...