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