# File lib/Borges/DRbServer.rb, line 40
  def self.create
    DRb.start_service

    provide_tried = false

    begin
      ::Rinda::RingFinger.new.lookup_ring_any # test for RingServer

    rescue RuntimeError => e
      # HACK: ugly, ugly, make RingNotFound an Exception subclass
      if e.message == 'RingNotFound' and not provide_tried then
        STDERR.puts "Spawning RingServer"

        provide_tried = true
        self.daemonize do
          require 'rinda/tuplespace'

          $0 = 'Borges RingServer'

          DRb.start_service

          Rinda::RingServer.new Rinda::TupleSpace.new

          DRb.thread.join
        end

        sleep 1
        retry
      else
        raise "Unable to start RingServer"
      end
    end

    borges_server = self.new

    service = ::Rinda::RingProvider.new :Borges, borges_server,
                                        "Borges Server"
    service.provide

    return borges_server
  end