2011-03-18 100 views
12

我正在使用YARD为我的rails应用程序生成文档,其中包含makrdown作为脚本解析器。大部分文档功能都可以直接使用。但是,我还想将模型属性记录到一个模型属性中,记录一个模型和两个可用属性的列表,以描述它们的语义含义。YARD的文档模型属性

我在YARD中找不到任何特别的支持,我基本上只是列出了类注释中的属性。有没有办法记录动态生成的模型属性,以便它们出现在文档中,如标准属性/方法?

P.S.我已经使用annodate-models gem在类列表顶部生成一个基本的模式转储,但那不是我想要的。

回答

9

经过相当长时间的搜索后,我跳过并手动将属性文档添加到模型文件中。这当然不是理想的,但希望模型结构不会改变很多。

我创造了该项目的.yardopts文件,并使用院子里的命令行选项来创建两个新的标签标记这些了:

--type-name-tag 'attribute:Attributes' --type-name-tag 'association:Associations' 

这为我提供了特定的标记,标记了属性和协会;它们将显示在文档中的“属性”和“关联”标题下。我可以添加:

# @attribute name [String] The name of the object 
# @association relatedObjs [Array<AnotherClass>] Objects needed to perform a certain function 

也许有人会为YARD编写一个插件来解析出注释模型输出。

+1

这看起来很有希望。我已经将annotae-models gem分叉以添加其他格式。这可能就是要走的路。你可以在github存储库中包含完整的命令行和.yardopts文件吗? – 2011-04-11 17:18:04

+2

是的!只需将您将使用的所有命令行选项放入项目根目录中的.yardopts文件即可。然后你所要做的就是从你的项目根目录运行'yardoc'。我很想看看你从注释模型代码中得到了什么。有人有一个有趣的分支,可以从MySQL表中获取评论以及其他列信息。这可能会更容易。 – dmkash 2011-04-12 02:18:37

+0

这看起来很有希望,但看起来YARD忽略了'[Type]'?!你有没有想出任何其他解决方案?这对你有多好? – 2012-07-26 14:36:54

13

看来YARD现在有这个目的它自己的@!attribute(注意感叹号)标签:

http://rubydoc.info/docs/yard/file/docs/Tags.md#attribute

例子:

class Task < ActiveRecord::Base 
    # @!attribute name 
    # @return [String] The name of the task. 

    # @!attribute description 
    # @return [String] The description of the task. 

    # @!attribute active 
    # @return [Boolean] Marks whether the task is active or not. 
end 

这将导致的漂亮文档中的属性。唯一需要注意的是,您始终保持文档是最新的,因为没有人会检查从数据库中删除文档时是否删除属性等。

+1

这就是我使用的解决方案,但它存在的问题是YARD显示Task#name ='Task#description ='和Task#active ='为未记录的,所以我不知道如何取回文档高达100%。 – digitig 2015-04-01 10:54:56

+0

我最终只是复制了setter的文档。有更好的解决方案吗? '@!attribute description =' – GreenEggs 2015-08-06 21:58:37