我对此真的很陌生,而且我一直在浏览YARD 文档,并且还没有真正找到解决我问题的方法。
这是我开始使用的代码:https ://github.com/spape/yard-rest-plugin效果很好,但我正在尝试为其添加一些功能。
基本上,我正在尝试添加一个过滤器,以便我可以包含一些模型文档,以便查看控制器 API 文档的人可以看到他们可以使用的模型的哪些属性。
插件 yard-rest 过滤掉任何没有@resource
标签的方法。所以,我想,我会@resource_object
为我的模型添加一个标签,我想在 API 文档中显示某些信息。
在插件的代码中。我在 /lib/yard-rest.rb 中找到
YARD::Templates::Template.extra_includes << RestFilters
在那个文件中,我修改了reject_without_resource(list)
方法
def reject_without_resource(list)
if list
list.delete_if { |object|
if !object.is_a?(YARD::CodeObjects::ClassObject)
true
else
!object.meths.detect{ |x| x.has_tag?(:resource) }# and
# !object.detect{ |x| x.has_tag?(:resource_object) }
end
}
end
end
YARD::CodeObjects::ClassObject
在我们关心的情况下,对象是 a 。object.meths
是一个方法数组(方法对象)。并且方法对象有一个检测方法,它允许测试一个方法是否具有我们想要通过.has_tag?
调用测试的任何标签。但是,我一直无法为班级找到类似的东西。现在,因为我不想在 API Docs 的模型中记录任何方法,所以我不想将 @resource 标记放在任何模型方法上。
我当前的 .yardopts 文件,表明我确实在搜索模型和控制器:
--title "My API Documentation"
--plugin rest
--readme API_README
app/models/*.rb
app/controllers/*.rb
那么,如何更改过滤器,以便我可以包含模型?或者至少是类级别的标签?