retryer 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/retryer.rb +55 -0
- metadata +44 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fd43285094a11707d13562b8c7bcf64371a2251b
|
4
|
+
data.tar.gz: ea972b8bf558ede1f936c0d23e8aa4bc3f5e9f82
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 23fa2b2a48e59acdfc8f1c9ae04de5c2b1179315f015209d40fb6f712adb176021b97ca651a5c5ad093b829fac616c51bf5cca82a54e901bde1c64ad2a100071
|
7
|
+
data.tar.gz: 881bbaa0612ab63cdba515bee3df4705f0ffb7167be799774d0099618565d2e457f07328a3a85fa2eb17b86c444dc3539fdd0fd69cc9d1fe289981d6dafab278
|
data/lib/retryer.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
module Retryer
|
2
|
+
class Retry
|
3
|
+
attr_accessor :max_retries, :interval
|
4
|
+
|
5
|
+
def initialize(max_retries: 5, interval: 1, verbose: true)
|
6
|
+
@max_retries=max_retries
|
7
|
+
@interval=interval
|
8
|
+
@verbose=verbose
|
9
|
+
end
|
10
|
+
|
11
|
+
def do(description: 'Operation')
|
12
|
+
retries = 0
|
13
|
+
begin
|
14
|
+
yield
|
15
|
+
rescue Exception => e
|
16
|
+
if retries < @max_retries
|
17
|
+
sleep @interval
|
18
|
+
retries += 1
|
19
|
+
puts "Retrying: '#{description}' (retries #{retries}) with caught exeception: #{e}" if @verbose
|
20
|
+
retry
|
21
|
+
end
|
22
|
+
raise "MAX RETRIES REACHED: '#{description}' failed after retrying #{@max_retries} times."
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class Wait
|
28
|
+
attr_accessor :timeout, :interval
|
29
|
+
|
30
|
+
def initialize(timeout: 5, interval: 1, verbose: true)
|
31
|
+
@timeout=timeout
|
32
|
+
@interval=interval
|
33
|
+
@verbose=verbose
|
34
|
+
end
|
35
|
+
|
36
|
+
def until(description: 'Operation')
|
37
|
+
begin
|
38
|
+
Timeout::timeout(@timeout) do
|
39
|
+
retries = 0
|
40
|
+
begin
|
41
|
+
raise "Condition not met" unless yield
|
42
|
+
rescue Exception => e
|
43
|
+
sleep @interval
|
44
|
+
retries += 1
|
45
|
+
puts "Retrying during wait (retries #{retries}) '#{description}' with caught exeception: #{e}" if @verbose
|
46
|
+
retry
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
rescue Exception => e
|
51
|
+
raise "TIMEOUT: '#{description}' after waiting #{@timeout} seconds."
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: retryer
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Barker
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-09-21 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Retry and wait tool
|
14
|
+
email: jarbarker@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/retryer.rb
|
20
|
+
homepage: https://github.com/assert200/retryer
|
21
|
+
licenses:
|
22
|
+
- MIT
|
23
|
+
metadata: {}
|
24
|
+
post_install_message:
|
25
|
+
rdoc_options: []
|
26
|
+
require_paths:
|
27
|
+
- lib
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ">="
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
requirements: []
|
39
|
+
rubyforge_project:
|
40
|
+
rubygems_version: 2.5.1
|
41
|
+
signing_key:
|
42
|
+
specification_version: 4
|
43
|
+
summary: Retryer
|
44
|
+
test_files: []
|