【发布时间】:2015-04-22 15:32:56
【问题描述】:
我想在我们的 Rails 应用程序中包含有关 Rake 任务的信息。我们将YARD 用于文档,目前lib/tasks/development.rake 之类的页面默认显示为无格式文本。
我可以使用 # @markup ruby from the YARD documentation 将它们呈现为 Ruby 源代码。
但是,这只会将任何 cmets 呈现为内联,即使它们包含像 # @!method foo 这样的 YARD 指令。这意味着the YARD documentation on tagging DSLs 似乎不适用。
我错过了什么吗?
如何让 YARD 识别 .rake 文件中的代码和文档?
注意我会对忽略实际代码并仅生成文档副本的解决方案感到满意,但文档副本的源必须是 .rake 文件本身——我不希望文档存在于单独的 .markdown 文件中(或无论如何),因为它失去同步的可能性太大。
更多信息 - yard 命令:
我正在使用包含以下内容的.yardopts 文件:
--asset graphs 'app/**/*.rb' 'lib/**/*.rb' - README info/*
要让 YARD 读取 Rake 任务,我可以在连字符之后添加'lib/tasks/*.rake'(即将 Rake 文件添加到 YARD 的“文件”列表中),但如上所述,这不会处理它们正确。
根据 Benjamin 在下面的建议,我尝试在连字符之前添加'lib/tasks/*.rake'(即将 Rake 文件添加到要处理的常规 Ruby 文件列表中),但这似乎不会生成什么都可以。
有可能 YARD 正在生成一些东西,但不是在预期的位置/我想使用预期的文件名,我对 YARD 的工作方式还不够熟悉,无法确定某处是否存在孤立输出。在 YARD 生成的搜索中肯定没有合适的内容出现,简单的 find doc | grep rake 或 find doc | grep basename_of_rake_file 不会显示任何内容。
【问题讨论】:
-
这仅仅是让 Yard 将
*.rake文件识别为 ruby 的问题吗? -
自问起我恐怕还没看过这么多,但我想基本上是这样,是的。然而,实际上使用
# @markup ruby指令指定它们是Ruby并不起作用,因为它仅呈现Ruby,即它不再处理文档cmets -
@Leo,在命令行上指定 rake 扩展有帮助吗? yardoc *.rake -o out/ ?
-
...也许使用 AT note 标签?
-
@benjamin 刚试过这些,恐怕它们似乎不起作用。它可以将
lib/tasks/*.rake添加到yardoc命令的files 部分,但随后它只会将它们作为文本读取(根据问题)。将它们添加到命令主体似乎根本不会为这些文件生成任何内容,即 Yard 类/方法/文件列表中没有列出任何内容,并且输出中似乎没有任何内容doc/目录。我还应该在哪里寻找输出?
标签: ruby-on-rails ruby rake yard