def self.create
    DRb.start_service
    provide_tried = false
    begin
      ::Rinda::RingFinger.new.lookup_ring_any 
    rescue RuntimeError => e
      
      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