2012-01-15 10 views
10

Estoy escribiendo documentación para mi gema de rubí usando YARD. En mi joya, tengo algo de código que sigue este patrón rubí común donde se incluye un módulo en una clase, y que el módulo no sólo añade métodos de instancia sino que también añade métodos de clase:PATIO: documentación de los métodos de clase añadidos por un módulo incluido

module Moo 
    def self.included(klass) 
    klass.extend ClassMethods 
    end 

    module ClassMethods 
    def hello 
     puts "hello" 
    end 
    end 
end 

class Foo 
    include Moo 
end 

Foo.hello # => class method runs, printing "hello" 

Por defecto, yarda generar documentación de la clase Foo que tiene este aspecto:

Inadequate documentation of the Foo class

Creo que esta documentación es inadecuada porque no le dice al usuario que el método Foo.hello está disponible. Para obtener más información acerca de hello, el usuario debe hacer clic en Moo y luego hacer clic en ClassMethods.

Sería genial tener una lista de todos los métodos de clase e instancia de Foo en una sola página. ¿Cómo puedo hacer que eso suceda? ¿Debo cambiar el código o puedo agregar una etiqueta para darle a YARD una pista sobre ClassMethods?

+0

¿Usted intentó utilizar [hacer] (http://rubydoc.info/docs/yard/file/docs/GettingStarted.md#Rendering_Objects__render_____) en la clase incrustada? No sé si funcionaría así o no. –

+0

Gracias por el consejo, pero lo intenté y no pude conseguir que renderizara nada. Avíseme si funciona para usted. –

Respuesta

7

Desde v0.8.0 puede utilizar la directiva @!parse:

class Foo 
    include Moo 
    # @!parse extend Moo::ClassMethods 
end 
Cuestiones relacionadas