YARD:像attr_accessor一样记录自定义getter/setter对

Mar*_*sen 5 ruby documentation yard

我正在使用YARD来记录我的项目.YARD文档创建的属性

attr_accessor :some_attribute
Run Code Online (Sandbox Code Playgroud)

在单独的"实例属性摘要"部分中.现在我有另一个属性,但使用自定义setter和getter

def some_other_attribute
  ...
end

def some_other_attribute= value
  ...
end
Run Code Online (Sandbox Code Playgroud)

基本上我的问题是,如何让YARD像attr_accessor前一种情况一样记录这对setter/getter ,并some_other_attribute在"Instance Attribute Summary"中列出?

Lor*_*gal 5

从0.8开始(现在处于预发布状态),该@!attribute指令是表示对象是属性的推荐方法.@attr_*不推荐使用这个标签以支持该指令.你也可以(0.8.0+):

# @!parse attr_accessor :some_attribute
Run Code Online (Sandbox Code Playgroud)

解析不一定由Ruby执行的代码.在0.8之前,您可以直接添加attr_accessor,然后重新定义setter/getter,如下所示:

class MyClass
  attr_accessor :foo
  def foo; something_else end
  def foo=(v) something_else(v) end
end
Run Code Online (Sandbox Code Playgroud)

Ruby不应该介意,除非ruby -w它会警告方法重新定义.如果这会让你烦恼,你也可以加入undef foo, foo=.它有点乱(如果你关心-w),这就是为什么我们添加像@!parse@!attribute.