Class: CoffeeBreak::Waiter::Coffee

Inherits:
Object
  • Object
show all
Defined in:
lib/coffee_break/waiter/coffee.rb

Instance Method Summary collapse

Constructor Details

#initialize(timeout: DEFAULT[:timeout], interval: DEFAULT[:interval], rescues: DEFAULT[:rescues], raise: DEFAULT[:raise]) ⇒ Coffee

Returns a new instance of Coffee.



4
5
6
7
8
9
10
11
# File 'lib/coffee_break/waiter/coffee.rb', line 4

def initialize(timeout: DEFAULT[:timeout], interval: DEFAULT[:interval],
               rescues: DEFAULT[:rescues], raise:    DEFAULT[:raise])

  @timeout  = timeout
  @interval = interval
  @rescues  = rescues
  @raise    = raise
end

Instance Method Details

#until(message: nil) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/coffee_break/waiter/coffee.rb', line 17

def until(message: nil)
  result = nil
  end_time = Time.now + @timeout
  loop do
    begin
      result = yield
      return result if result
    rescue *@rescues
    end
    break if Time.now >= end_time
    sleep @interval
  end
  if @raise
    raise(TimeoutError, message || "Timed out after #{@timeout} seconds")
  else
    warn message if message
    result
  end
end