exponential_backoff 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0d9f69e3ee02f109cc36d53d44ec606e8d9d96a5
4
- data.tar.gz: b5044042ab5d5415f9f7cd926462527a5d4d0f0a
3
+ metadata.gz: ba61c347fad475b50607992cdbb7576a5a0cc92b
4
+ data.tar.gz: 5cf04b6918d74d7e6a8a9eba18d630942cdaa458
5
5
  SHA512:
6
- metadata.gz: 45ae6ebb3749c20399bcf93bfb450a0509b49b3b8cbed6e11065124a1d3b128eb05da173064d0757b8ae4ddff19f425a638bb9ac8d79eed2efb995c266666d4b
7
- data.tar.gz: 7d969904c3516891ef2bb20654c66139a1ce2319840646ddc06742034b8280437f44f0ac87d0440c72cf9f7c544b0e7f732676b52bc5ec3078ad9bb286811fbd
6
+ metadata.gz: 069fcd523020681fcf1e6e853c0602466a7240272f3bc6d74fb7a2b1148df152994e600d4cfa1c14e100ed2cb285d495dfe485d7f974d52632059afb990d72bb
7
+ data.tar.gz: f620fda204a7540e58a459158f05ec0215e538b1448eabc655965b3ec15dd9ff7adeadf77b6bd642c2000ef8571d1abc2575e7537e5ce115b8e32613882b73e1
data/README.md CHANGED
@@ -1,4 +1,23 @@
1
- exponential_backoff
2
- ===================
1
+ # Exponential Backoff
2
+ ### _Simple Exponential Backoff in Ruby_
3
+ ---
3
4
 
4
- Simple Exponential Backoff
5
+ ## Installation
6
+
7
+ $ gem install exponential_backoff
8
+
9
+ ## Usage
10
+
11
+ ```ruby
12
+ require 'exponential_backoff'
13
+
14
+ ExponentialBackoff.try(3) do
15
+ res = Hippie.get(url)
16
+ fail if res.error?
17
+ end
18
+ ```
19
+
20
+ ## API
21
+ ```ruby
22
+ ExponentialBackoff.try(max_number_of_tries) { request }
23
+ ```
@@ -1,11 +1,11 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'exponential_backoff'
3
- s.version = '0.1.0'
3
+ s.version = '0.2.0'
4
4
  s.summary = 'Exponential Backoff'
5
5
  s.description = 'Simple Exponential Backoff in Ruby'
6
6
  s.author = 'Martin Manelli'
7
7
  s.email = 'manelli.ml@gmail.com'
8
- s.homepage = 'http://github.com/manelli/hippie'
8
+ s.homepage = 'http://github.com/manelli/exponential_backoff'
9
9
  s.license = 'MIT'
10
10
  s.require_paths = ['lib']
11
11
 
@@ -1,23 +1,30 @@
1
1
  module ExponentialBackoff
2
- RequestNotSucceded = Class.new(StandardError)
3
-
4
2
  def self.try(max_tries, &block)
3
+ errors = []
5
4
  1.upto max_tries do |n|
6
5
  begin
7
- return res = block.call
8
- rescue => error
6
+ return block.call
7
+ rescue => err
8
+ errors << err
9
9
  wait(n)
10
10
  next
11
11
  end
12
12
  end
13
- raise RequestNotSucceded
13
+ raise FailedRequest.new(errors)
14
14
  end
15
15
 
16
- private
17
-
18
16
  def self.wait(iteration)
19
17
  seconds = rand(1..1000) * 0.001
20
18
  waiting_time = (2**iteration + seconds).ceil
21
19
  sleep(waiting_time)
22
20
  end
21
+ private_class_method :wait
22
+
23
+ class FailedRequest < StandardError
24
+ attr_reader :errors
25
+
26
+ def initialize(errors)
27
+ @errors = errors
28
+ end
29
+ end
23
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exponential_backoff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Manelli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-01 00:00:00.000000000 Z
11
+ date: 2014-12-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Simple Exponential Backoff in Ruby
14
14
  email: manelli.ml@gmail.com
@@ -20,7 +20,7 @@ files:
20
20
  - README.md
21
21
  - exponential_backoff.gemspec
22
22
  - lib/exponential_backoff.rb
23
- homepage: http://github.com/manelli/hippie
23
+ homepage: http://github.com/manelli/exponential_backoff
24
24
  licenses:
25
25
  - MIT
26
26
  metadata: {}
@@ -40,8 +40,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
40
40
  version: '0'
41
41
  requirements: []
42
42
  rubyforge_project:
43
- rubygems_version: 2.4.2
43
+ rubygems_version: 2.4.4
44
44
  signing_key:
45
45
  specification_version: 4
46
46
  summary: Exponential Backoff
47
47
  test_files: []
48
+ has_rdoc: