def run_rdoc(*args)
    args << @spec.rdoc_options
    args << self.class.configured_args
    args << @spec.require_paths.clone
    args << @spec.extra_rdoc_files
    args << '--title' << "#{@spec.full_name} Documentation"
    args << '--quiet'
    args = args.flatten.map do |arg| arg.to_s end

    if self.class.rdoc_version >= Gem::Version.new('2.4.0') then
      args.delete '--inline-source'
      args.delete '--promiscuous'
      args.delete '-p'
      args.delete '--one-file'
      # HACK more
    end

    debug_args = args.dup

    r = RDoc::RDoc.new

    old_pwd = Dir.pwd
    Dir.chdir @spec.full_gem_path

    say "rdoc #{args.join ' '}" if Gem.configuration.really_verbose

    begin
      r.document args
    rescue Errno::EACCES => e
      dirname = File.dirname e.message.split("-")[1].strip
      raise Gem::FilePermissionError.new(dirname)
    rescue Interrupt => e
      raise e
    rescue Exception => ex
      alert_error "While generating documentation for #{@spec.full_name}"
      ui.errs.puts "... MESSAGE:   #{ex}"
      ui.errs.puts "... RDOC args: #{debug_args.join(' ')}"
      ui.errs.puts "\t#{ex.backtrace.join "\n\t"}" if
        Gem.configuration.backtrace
      terminate_interaction 1
    ensure
      Dir.chdir old_pwd
    end
  end
#
Run RDoc with +args+, which is an ARGV style argument list