Class: Foodtaster::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/foodtaster/client.rb

Constant Summary collapse

MAX_ATTEMPTS =
20

Class Method Summary collapse

Class Method Details

.connect(drb_port, server_process = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/foodtaster/client.rb', line 8

def self.connect(drb_port, server_process = nil)
  attempt_index = 1
  begin
    sleep 0.2
    client = Foodtaster::Client.new(drb_port)
  rescue DRb::DRbConnError => e
    Foodtaster.logger.debug "DRb connection failed (attempt #{attempt_index}/#{MAX_ATTEMPTS}): #{e.message}"
    attempt_index += 1
    retry if attempt_index <= MAX_ATTEMPTS && (server_process.nil? || server_process.alive?)
  end

  if client
    Foodtaster.logger.debug "DRb connection established"
  else
    Foodtaster.logger.debug "Can't connect to Foodtaster DRb Server"
  end

  client
end