waiting 0.2.0 → 0.3.0
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 +8 -8
- data/README.md +20 -0
- data/lib/waiting/version.rb +1 -1
- data/lib/waiting/waiter.rb +5 -0
- data/lib/waiting.rb +21 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
ZDY2YTVlYTIyZDBmZDhjZTkyNWE1YWU0ZWFiYmFmM2I5Mzg4YjY5ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZWZjZWEyZDQ5M2Q3ZTJkODZmNmZjZGM1OGU4MmIyNGFjOWE0MzA0Zg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Nzg2N2YzYTJjNmI3NzU5OWFiMmY3OGE2MmEwMDFiMzg0MTcwNGM1NzIxNTM2
|
10
|
+
ODRjYjA4Y2NjMjcwNjE0MjNkNWFmZjU2MzBkZjVhYWI5M2ZhZGEzZWNmYWIw
|
11
|
+
ZDI5NGJkZDg3MjRkMzgxNTIyODNjMWI0MDlkZjgwNjVmMTg1ZmM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzZiMWNkODNkZDdjMTQxNDY5MDY4ZTdiZTM5ZDA1ZmUxMzU1ZjMyZTYzNzgz
|
14
|
+
NGI3MjRiYzY2MzI3MTYyYzUxNjM4NmFhYWMxNTc0ZGM2YWU4NTg3MDI0NDcy
|
15
|
+
MzgyMjhiMjYwY2I4NGNiMTljZmE1NWZlZTFiZGNmYzI1YjA3ZDM=
|
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[](https://travis-ci.org/meringu/waiting)
|
2
|
+
|
1
3
|
# Waiting
|
2
4
|
|
3
5
|
Waits so you don't have to!
|
@@ -36,6 +38,24 @@ end
|
|
36
38
|
Waiting.wait(interval: interval, max_attempts: max_attempts) do |waiter|
|
37
39
|
waiter.done if something
|
38
40
|
end
|
41
|
+
|
42
|
+
# You can do exponential backoff
|
43
|
+
# for example, exp_base of 2 and an interval of 1 second,
|
44
|
+
# will wait for: 1,2,4,8...
|
45
|
+
Waiting.wait(exp_base: 2) do |waiter|
|
46
|
+
waiter.done if something
|
47
|
+
end
|
48
|
+
|
49
|
+
# or specify it as a default
|
50
|
+
Waiting.default_exp_base = exp_base # exponential backoff base, defaults to 1
|
51
|
+
|
52
|
+
# will log options, and give progress updates if you like
|
53
|
+
Waiting.wait do |waiter|
|
54
|
+
puts waiter.attempts
|
55
|
+
puts waiter.exp_base
|
56
|
+
puts waiter.interval
|
57
|
+
puts waiter.max_attempts
|
58
|
+
end
|
39
59
|
```
|
40
60
|
|
41
61
|
## Contributing
|
data/lib/waiting/version.rb
CHANGED
data/lib/waiting/waiter.rb
CHANGED
data/lib/waiting.rb
CHANGED
@@ -15,6 +15,18 @@ module Waiting
|
|
15
15
|
@@default_interval = interval
|
16
16
|
end
|
17
17
|
|
18
|
+
# get the default exponential base
|
19
|
+
# @return [Float] the base for exponential backoff
|
20
|
+
def self.default_exp_base
|
21
|
+
@@default_exp_base ||= 1
|
22
|
+
end
|
23
|
+
|
24
|
+
# set the default exponential base
|
25
|
+
# @param [Float] exp_base the base for exponential backoff
|
26
|
+
def self.default_exp_base=(exp_base)
|
27
|
+
@@default_exp_base = exp_base
|
28
|
+
end
|
29
|
+
|
18
30
|
# get the default max attempts
|
19
31
|
# @return [Fixnum] the default max attempts
|
20
32
|
def self.default_max_attempts
|
@@ -33,6 +45,7 @@ module Waiting
|
|
33
45
|
# @option opts [Fixnum] :max_attempts number of attempts before failing
|
34
46
|
def self.wait(opts = {})
|
35
47
|
interval = opts.fetch(:interval) { default_interval }
|
48
|
+
exp_base = opts.fetch(:exp_base) { default_exp_base }
|
36
49
|
max_attempts = opts.fetch(:max_attempts) { default_max_attempts }
|
37
50
|
|
38
51
|
waiter = Waiter.new
|
@@ -43,10 +56,17 @@ module Waiting
|
|
43
56
|
if attempts >= max_attempts
|
44
57
|
fail(TimedOutError, "Timed out after #{interval * max_attempts}s")
|
45
58
|
end
|
59
|
+
|
60
|
+
waiter.attempts = attempts
|
61
|
+
waiter.exp_base = exp_base
|
62
|
+
waiter.interval = interval
|
63
|
+
waiter.max_attempts = max_attempts
|
64
|
+
|
46
65
|
yield(waiter)
|
47
66
|
break if waiter.done?
|
48
|
-
sleep interval
|
67
|
+
sleep exp_base ** attempts * interval
|
49
68
|
attempts += 1
|
50
69
|
end
|
51
70
|
end
|
71
|
+
|
52
72
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: waiting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henry Muru Paenga
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|