如何记录Ruby代码?


201

在记录红宝石代码时是否有某些代码约定?例如,我有以下代码片段:

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

这种猜测是可以的,但是也许有更好/更好的文档实践?


shop.oreilly.com/product/9780596516178.do在源代码中有一个很好的小例子。请看第2章清单。就像这里的答案一样。我玩过rdoc只是为了显示源代码。您可以将文件扩展名类似my_code.rb更改为my_code.rb.txt,然后在其上运行rdoc。> rdoc my_code.rb.txt,那么对于类和模块就没有关系,因为rdoc仍然会为它呈现html。玩得开心。
Douglas G. Allen

Answers:


198

您应该将文档定位于RDoc处理器,RDoc处理器可以找到您的文档并从中生成HTML。您已经在正确的位置添加了注释,但是您应该查看RDoc文档以了解RDoc知道如何格式化的标记类型。为此,我将重新格式化您的评论,如下所示:

  # 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)

我应该如何证明outhandler和errhandler参数为nil?
StackedCreoked09年

10
YARD的注释可能更强大,但是直到它被包含在标准Ruby发行版而不是RDoc中之前,它的注释才是标准的。
肯·布鲁姆(

RDoc链接已损坏,请尝试以下操作:github.com/ruby/rdoc。如果每个人都对该链接感到满意,我将要求编辑答案。
乔丹·斯图尔特

27

强烈建议使用RDoc。这几乎是标准。阅读代码注释很容易,它使您可以轻松地为项目创建基于Web的文档。


24

我建议按照所述了解RDoc。但是,也不要忽略非常流行的YARD A Ruby Document工具。您会在网上看到的很多关于Ruby的文档都使用Yard。RVM知道Yard并将其用于在计算机上生成文档(如果有)。

由于Yard使用RDoc,因此仍然需要RDoc。


1
使用了大多数C ++,Java,Scala和PHP之后,我发现该@tag符号非常熟悉。
doub1ejack '16

1
已经过去了四年,YARD有了长足的发展。遗憾的是,Ruby中仍未包含YARD。(通过YARD主页接受HTTPS的方式。)
富兰克林·于

1
YARD似乎比RDoc轻!谢谢:)
Constantin De La Roche


9

您也可以检查TomDoc for Ruby-版本1.0.0-rc1。

http://tomdoc.org/


FWIW,这一点在GitHub样式指南中指定-github.com/styleguide/ruby
Michael Easter

谢谢,在记录红宝石代码时,tomdoc似乎是当前最佳实践的良好来源。回答rdoc文档中显然缺少的“如何”和“为什么”。
Michael Renner 2014年

TomDoc尚未更新。上一次提交是2012
。– maasha 2015年

1
@maasha到2017年,我相信除了普通的RDoc之外,最好的选择是YARD,因为它可以解析内容并可以创建一些指向类和方法的超链接。
富兰克林·于


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.