2011-09-28 12 views
5

Sto usando YARD per documentare il mio progetto. Attributi documenti YARD creati conYARD: documento personalizzato getter/setter pair come attr_accessor

attr_accessor :some_attribute 

in una sezione separata "Riepilogo attributi di istanza". ora ho un altro attributo, ma con setter costume e getter

def some_other_attribute 
    ... 
end 

def some_other_attribute= value 
    ... 
end 

Quindi, in pratica la mia domanda è, come posso ottenere YARD per documentare questa coppia di setter/getter proprio come attr_accessor nel caso precedente, e la lista some_other_attribute all'interno "Riepilogo degli attributi di istanza"?

risposta

5

A partire da 0.8 (che è in pre-release in questo momento), la direttiva @!attribute è il modo consigliato per indicare che un oggetto è un attributo. I tag @attr_* sono deprecati a favore di questa direttiva. Si potrebbe anche fare (in 0.8.0+):

# @!parse attr_accessor :some_attribute 

per analizzare il codice che non è necessariamente eseguito da Ruby. Prima di 0,8, si può solo aggiungere l'attr_accessor direttamente e quindi ridefinire il setter/getter come segue:

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

Rubino non dovrebbe importa, solo che in ruby -w si verrà avvertiti sul metodo ridefinizioni. Se questo ti infastidisce, puoi aggiungere anche undef foo, foo=. È un po 'disordinato (se ti interessa di -w), motivo per cui abbiamo aggiunto cose come @!parse e @!attribute.

+0

Dove definiresti '@! Parse attr_accessor: some_attribute'? – thomthom

1

Si dovrebbe essere in grado di utilizzare il tag @attr sulla classe:

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

Ci sono altri tag (come @attr_reader e @attr_writer) che può anche essere utile.

Problemi correlati