Comment documenter le code Ruby?

201

Existe-t-il certaines conventions de code lors de la documentation du code Ruby? Par exemple, j'ai l'extrait de code suivant:

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

Cette supposition est correcte, mais peut-être existe-t-il des pratiques de documentation meilleures / supérieures?

StackedCrooked
la source
shop.oreilly.com/product/9780596516178.do a un joli petit exemple dans le code source. Regardez dans la liste du chapitre 2. C'est à peu près comme la réponse ici. J'ai joué avec rdoc juste pour montrer le code source. Vous pouvez faire de votre extension de fichier quelque chose comme my_code.rb en my_code.rb.txt, puis exécuter rdoc dessus. > rdoc my_code.rb.txt alors cela n'aura plus d'importance pour les classes et les modules car rdoc rendra le html de toute façon. Aie du plaisir avec ça.
Douglas G. Allen

Réponses:

198

Vous devez cibler votre documentation pour le processeur RDoc, qui peut trouver votre documentation et générer du HTML à partir de celle-ci. Vous avez placé votre commentaire au bon endroit pour cela, mais vous devriez jeter un oeil à la documentation RDoc pour en savoir plus sur les types de balises que RDoc sait formater. À cette fin, je reformaterais votre commentaire comme suit:

  # 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)
Ken Bloom
la source
Comment dois-je documenter que les paramètres de l'outhandler et de l'errhandler peuvent être nuls?
StackedCrooked
10
Les annotations de YARD peuvent être plus puissantes, mais tant qu'elles ne sont pas incluses dans la distribution Ruby standard au lieu de RDoc, ses annotations ne sont pas la norme.
Ken Bloom
Le lien RDoc est rompu, essayez ceci: github.com/ruby/rdoc . Je demanderai de modifier la réponse si tout le monde est satisfait de ce lien.
Jordan Stewart
27

Je suggère fortement d' utiliser RDoc . C'est à peu près la norme. Il est facile de lire les commentaires du code et vous permet de créer facilement une documentation Web pour votre projet.

Topher Fangio
la source
24

Je suggère de faire connaissance avec RDoc comme indiqué. Mais n'ignorez pas non plus l' outil très populaire YARD A Ruby Document . Une grande partie de la documentation que vous verrez en ligne pour Ruby utilise Yard. RVM connaît Yard et l'utilise pour générer votre documentation sur votre machine si elle est disponible.

RDoc serait toujours requis, car Yard l'utilise.

vgoff
la source
1
Ayant utilisé principalement C ++, Java, Scala et PHP, je trouve la @tagnotation très familière.
doub1ejack
1
Cela fait quatre ans et YARD a beaucoup évolué. Dommage que YARD ne soit toujours pas inclus dans Ruby. (Au fait, la page d'accueil de YARD accepte le HTTPS.)
Franklin Yu
1
YARD semble être plus léger que RDoc! Merci :)
Constantin De La Roche
9

Vous pouvez également vérifier TomDoc pour Ruby - Version 1.0.0-rc1.

http://tomdoc.org/

onurozgurozkan
la source
FWIW, celui-ci est spécifié dans le guide de style GitHub - github.com/styleguide/ruby
Michael Easter
Merci, tomdoc semble être une bonne source pour les meilleures pratiques actuelles en matière de documentation du code ruby. Répond au "comment" et au "pourquoi" apparemment absents de la documentation de rdoc.
Michael Renner
TomDoc n'a pas été tenu à jour. Le dernier commit a été mai 2012.
maasha
1
@maasha D'ici 2017, je crois que le meilleur pari en plus du RDoc ordinaire serait YARD, maintenant qu'il analyse le contenu et crée des hyperliens de fantaisie vers les classes et les méthodes.
Franklin Yu
2

Le canonique est RDoc, il est très similaire à celui que vous avez publié.

Voir l'exemple de section sur le lien que je vous ai envoyé

OscarRyz
la source