2011-03-18 36 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