Module: Kernel

Defined in:
lib/subelsky_power_tools/ext/kernel.rb

Overview

Instance Method Summary collapse

Instance Method Details

#retryable(options = {}) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/subelsky_power_tools/ext/kernel.rb', line 4

def retryable(options = {})
  opts = { :tries => 1, :on => [StandardError] }.merge(options)
  tries = opts[:tries]

  exceptions = opts[:on]
  count = 0
  sleep_seconds = opts[:sleep] || 0

  begin
    count += 1
    yield
  rescue *exceptions => e
    if count < tries
      Kernel.sleep(sleep_seconds)
      retry
    else
      raise e
    end
  end
end