当我在我的Rails应用程序根目录中运行rake doc:app
时,将使用/doc/README_FOR_APP
作为主页生成API文档。我想在该文件中添加.rdoc
扩展,以便在GitHub上正确呈现。更好的是,我想将其移至应用根(/README.rdoc
)。有没有办法通过修改包含的Rakefile
任务在我的rake/rdoctask
中执行此操作?是否有某些地方可以查找可以修改的主页文件的名称?或者我是否必须编写新的Rake任务?
奖金问题:Rails应用程序的两个单独文件/README
和/doc/README_FOR_APP
背后的逻辑是什么?为什么不只是一个?
答案 0 :(得分:4)
Rails rdoc任务在<rails gem folder>/lib/tasks/documentation.rake
执行您想要的操作,执行:app任务并更改它,将其放入应用程序/ lib / tasks中的.rake文件
#clear the doc:app task et al
Rake::Task["doc:app"].clear
Rake::Task["doc/app"].clear
Rake::Task["doc/app/index.html"].clear
namespace :doc do
desc "Generate documentation for the application. Set custom template with TEMPLATE=/path/to/rdoc/template.rb or title with TITLE=\"Custom Title\""
Rake::RDocTask.new("app") { |rdoc|
rdoc.rdoc_dir = 'doc/app'
rdoc.template = ENV['template'] if ENV['template']
rdoc.title = ENV['title'] || "Rails Application Documentation"
rdoc.options << '--line-numbers' << '--inline-source'
rdoc.options << '--charset' << 'utf-8'
rdoc.rdoc_files.include('app/**/*.rb')
rdoc.rdoc_files.include('lib/**/*.rb')
rdoc.rdoc_files.include('README')
rdoc.main = 'README'
}
end
我不确定这是不是确实如此,但请继续使用它并查看rdoc task docs以获取更多信息。
答案 1 :(得分:4)
创建新的Rails应用程序时会创建README_FOR_APP
文件。该代码位于rails-#.#.#\lib\rails_generator\generators\applications\app\app_generator.rb
。
要添加后缀并更改所有Rails应用的位置,您可以将方法修改为:
def create_documentation_file(m)
# was m.file "doc/README_FOR_APP", "doc/README_FOR_APP"
m.file "doc/README_FOR_APP", "README_FOR_APP.rdoc"
end
然后,您需要在rails-#.#.#\lib\tasks\documentation.rake
中修改Rake文档任务以包含此文件而不是旧文件:
Rake::RDocTask.new("app") { |rdoc|
...
rdoc.rdoc_files.include('README_FOR_APP.rdoc') # was 'doc/README_FOR_APP'
}
README_FOR_APP
,顾名思义就是文档
您关注的是 特定的 Rails应用程序
你将要的类和方法
写了。README
是描述结构的所有Rails应用程序的 一般 文档
Rails应用程序和一些Web服务器设置。它处于比README_FOR_APP
更高的水平。
作为提示,我建议你保留两个文件而不是重命名它们(不要忘记Rail的约定优于配置方面)。任何Rails开发者都希望这些文件存在,重命名它们可能会使事情变得更复杂。
您的IDE也可能使用此约定。例如,我使用Netbeans,并且Rails项目视图已预先配置为显示某些文件。如果将README_FOR_APP
文件移动到根目录,NetBeans将不会在项目视图中显示它,您将不得不使用文件视图,或修改项目视图(不知道是否可能)。
答案 2 :(得分:1)
如果您在本地应用文件夹中创建相同的任务,例如lib/tasks/doc.rake
并定义相同的任务,请执行以下操作:
namespace :doc do
task :app do
# some code that adds rdoc extension
end
end
然后这个任务将在rails的内置任务之后运行。因此,您不必乱用rails源并仍然可以实现目标。