2011-09-28 4 views
5

私は自分のプロジェクトを文書化するのにYARDを使用しています。 YARDは、別のセクション「インスタンス属性の要約」でYARD:attr_accessorのようなドキュメントのカスタムゲッター/セッターのペア

attr_accessor :some_attribute 

で作成された属性を文書化します。今私は、別の属性を持っていますが、カスタムのセッターとゲッターと

def some_other_attribute 
    ... 
end 

def some_other_attribute= value 
    ... 
end 

ので、基本的に私の質問ですが、私はYARDがちょうど前のケースでattr_accessor、およびリスト​​内のようなセッター/ゲッターのこのペアを文書化するために得ることができる方法"インスタンス属性の概要"?

答えて

5

0.8(現在のプレリリース)では、オブジェクトが属性であることを示すために、@!attributeディレクティブが推奨されます。 @attr_*タグはこのディレクティブのために推奨されていません。あなたはまた、(0.8.0以上で):

# @!parse attr_accessor :some_attribute 

Rubyで必ずしも実行されないコードを解析することができます。 0.8前に、あなただけの直接attr_accessorを追加し、次のようにセッター/ゲッターを再定義することができます:

class MyClass 
    attr_accessor :foo 
    def foo; something_else end 
    def foo=(v) something_else(v) end 
end 

をRubyのは、それがメソッドの再定義について警告しますruby -wのものを除いて、気にはなりません。このバグがある場合は、undef foo, foo=も追加できます。ちょっと乱雑です(あなたが-wを気にしている場合)。そのため、@!parse@!attributeのようなものを追加しました。

+0

ここで '@!parse attr_accessor:some_attribute'をどこに定義しますか? – thomthom

1

あなたは、クラスに@attrタグを使用することができるはずです。

# @attr [String] name The name of this object. 
class MyClass 
    def name 
    end 
    def name= 
    end 
end 

も参考にすることができより(@attr_readerと@attr_writerなどの)他のタグがあります。

関連する問題