我可以通过正确的格式将README.textile放入我的RDoc吗?

我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。 有没有办法让RDoc通过RedCloth或BlueCloth而不是自己的格式化程序运行文件? 可以配置为从文件后缀自动检测格式吗? (例如,README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行)

直接使用YARD而不是RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀合理即可。 我经常使用类似下面的Rake任务:

desc "Generate RDoc" task :doc => ['doc:generate'] namespace :doc do project_root = File.expand_path(File.join(File.dirname(__FILE__), '..')) doc_destination = File.join(project_root, 'doc', 'rdoc') begin require 'yard' require 'yard/rake/yardoc_task' YARD::Rake::YardocTask.new(:generate) do |yt| yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) + [ File.join(project_root, 'README.md') ] yt.options = ['--output-dir', doc_destination, '--readme', 'README.md'] end rescue LoadError desc "Generate YARD Documentation" task :generate do abort "Please install the YARD gem to generate rdoc." end end desc "Remove generated documenation" task :clean do rm_r doc_dir if File.exists?(doc_destination) end end 

如果您在github上托管项目,您还可以使用http://rdoc.info自动使用YARD构建和发布您的rdocs。

我意识到26819中的代码前面有“类似的东西”,但我遇到了一些问题。 我对答案的编辑被拒绝了,所以这里有一个固定版本(编辑被评论):

 desc "Generate RDoc" task :doc => ['doc:generate'] namespace :doc do # edit: typically (for gems, at least), Rakefile is in the root, so ".", not ".." project_root = File.expand_path(File.join(File.dirname(__FILE__), '.')) doc_destination = File.join(project_root, 'doc', 'rdoc') begin require 'yard' require 'yard/rake/yardoc_task' YARD::Rake::YardocTask.new(:generate) do |yt| # edit: README.md is not a ruby source file - see # https://stackoverflow.com/questions/7907698/yard-0-7-3-fails-to-build-my-readme-in-both-markdown-and-textile # remove README.md from yt.files yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) yt.options = ['--output-dir', doc_destination, '--readme', 'README.md'] end rescue LoadError desc "Generate YARD Documentation" task :generate do abort "Please install the YARD gem to generate rdoc." end end desc "Remove generated documenation" task :clean do #edit: doc_dir was undefined; replaced by doc_destination rm_r doc_destination if File.exists?(doc_destination) end end