Doesn't hard-coding this list violate DRY?  The next time there is a change to the docs top-level this is very likely to break.

Also since it's a build task, I'd prefer to see it written as a rake task (e.g. `docs:html`) so that it can be easily referenced from anywhere within the rake dependency tree, e.g.

    task :docs => [ 'docs:html', 'docs:pdf' ]
    namespace :docs do
      task :html, :output_dir do |t, args|
        args.with_defaults(:output_dir => 'doc')
        # write HTML to #{args.output_dir}
        ...

Then you could build all the doc formats via `rake docs` or just HTML via e.g. `rake docs:html[/my/tmp/dir]`

Since it's then written in Ruby, it would presumably be possible to do it even when the server isn't running, by invoking the Ruby code directly.  For this the task would need a dependency on the [magic `environment` task](http://stackoverflow.com/questions/7044714/whats-the-environment-task-in-rake).