Como documentar código Ruby?


201

Existem certas convenções de código ao documentar o código ruby? Por exemplo, eu tenho o seguinte trecho de código:

require 'open3'

module ProcessUtils

  # Runs a subprocess and applies handlers for stdout and stderr
  # Params:
  # - command: command line string to be executed by the system
  # - outhandler: proc object that takes a pipe object as first and only param (may be nil)
  # - errhandler: proc object that takes a pipe object as first and only param (may be nil)
  def execute_and_handle(command, outhandler, errhandler)
    Open3.popen3(command) do |_, stdout, stderr|
      if (outhandler)
        outhandler.call(stdout)
      end
      if (errhandler)
        errhandler.call(stderr)
      end
    end
  end
end

Acho que está tudo bem, mas talvez haja práticas de documentação melhores / superiores?


shop.oreilly.com/product/9780596516178.do tem um bom exemplo no código-fonte. Veja a lista do capítulo 2. É quase como a resposta aqui. Eu brinquei com o rdoc apenas para mostrar o código fonte. Você pode tornar sua extensão de arquivo algo como my_code.rb para my_code.rb.txt e, em seguida, executar o rdoc nela. > rdoc my_code.rb.txt, então não importará classes e módulos porque o rdoc renderizará html para ele de qualquer maneira. Divirta-se com isso.
— Douglas G. Allen

Respostas:


198

Você deve direcionar sua documentação para o processador RDoc, que pode encontrar sua documentação e gerar HTML a partir dela. Você colocou seu comentário no lugar certo para isso, mas deve dar uma olhada na documentação do RDoc para aprender sobre os tipos de tags que o RDoc sabe como formatar. Para esse fim, reformato seu comentário da seguinte maneira:

  # Runs a subprocess and applies handlers for stdout and stderr
  # Params:
  # +command+:: command line string to be executed by the system
  # +outhandler+:: +Proc+ object that takes a pipe object as first and only param (may be nil)
  # +errhandler+:: +Proc+ object that takes a pipe object as first and only param (may be nil)

Como devo documentar que os parâmetros outhandler e errhandler podem ser nulos?
— StackedCrooked

10
As anotações de YARD podem ser mais poderosas, mas até que sejam incluídas na distribuição padrão do Ruby em vez de RDoc, suas anotações não são o padrão.
— 5609 Ken Bloom

O link RDoc está quebrado, tente o seguinte: github.com/ruby/rdoc . Solicitarei editar a resposta se todos estiverem satisfeitos com esse link.
— Jordan Stewart

27

Eu altamente sugeriria usar RDoc . É praticamente o padrão. É fácil ler os comentários do código e permite criar facilmente documentação baseada na Web para o seu projeto.


24

Eu sugeriria conhecer o RDoc como está indicado. Mas não ignore a muito popular ferramenta YARD A Ruby Document . Muita da documentação que você verá online para Ruby usa Yard. O RVM conhece a Yard e a utiliza para gerar sua documentação em sua máquina, se estiver disponível.

O RDoc ainda seria necessário, como o Yard o usa.


1
Tendo usado principalmente C ++, Java, Scala e PHP, acho a @tagnotação muito familiar.
— doub1ejack

1
Faz quatro anos e o YARD evoluiu bastante. É uma pena que YARD ainda não esteja incluído no Ruby. (A propósito, a página inicial do YARD aceita HTTPS).
— Franklin Yu

1
YARD parece ser mais leve que RDoc! Obrigado :)
— Constantin De La Roche


9

Você também pode verificar o TomDoc for Ruby - Versão 1.0.0-rc1.

http://tomdoc.org/


FWIW, este é especificado na guia de estilo GitHub - github.com/styleguide/ruby
— Michael Páscoa

Obrigado, o tomdoc parece ser uma boa fonte para as melhores práticas atuais quando se trata de documentar o código ruby. Responde ao "como" e "por que" aparentemente ausente da documentação do rdoc.
— Michael Renner

O TomDoc não foi atualizado. Última confirmação era de Maio de 2012.
— maasha

1
@maasha Até 2017, acredito que a melhor aposta além do RDoc comum seria YARD, agora que ele analisa o conteúdo e cria alguns hiperlinks sofisticados para classes e métodos.
— Franklin Yu

2

O canônico é RDoc , é muito parecido com o que você postou.

Veja a seção de amostra no link que enviei a você


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.