take2 0.0.1 → 0.0.2

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: c8ec07213b11c7223692259cee1c4fae9af86069
4
- data.tar.gz: e3050a3a0aac4b6454193e2051a899e4b2b52635
3
+ metadata.gz: 93023dc58265f6607decc8cb6aa621c3ac538752
4
+ data.tar.gz: 99d85d1401815f441b891ac84468dac5cce4860e
5
5
  SHA512:
6
- metadata.gz: 73b036448036c9903c5cae7243ff7dfe1df679f04f5482ac413a40aeb3587652fd7f66ac457be8feb624706bf4534e73cede712935e47ffb7131f4dc89fe1cac
7
- data.tar.gz: 83cfcac40ee6e3c24f546091a016ab93b6a72527a9a66a3f713df9a7376625cd29c1d339fc876597c24e0832e6ffb08a2364d7b271087b57ac392a39597fc04a
6
+ metadata.gz: d38f2b5982925c8d4a116b14d799e8deb93256bccd886cc0dd0a560eed664f0caf8d5ba158074d15fc9ae2f54df33592b473af0f5611e2f19fba4a4281902d3d
7
+ data.tar.gz: 34fb1713275927a3edeee00870331f8e44b182ac1da2dcd0238e5c459f86839b8e03424224da3be84a0c0a472b7aa7de937febd9a3e7006c7da00a28860b3741
@@ -0,0 +1,24 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to help us improve
4
+
5
+ ---
6
+
7
+ **Describe the bug**
8
+ A clear and concise description of what the bug is.
9
+
10
+ **To Reproduce**
11
+ Steps to reproduce the behavior:
12
+ 1. Go to '...'
13
+ 2. Click on '....'
14
+ 3. Scroll down to '....'
15
+ 4. See error
16
+
17
+ **Expected behavior**
18
+ A clear and concise description of what you expected to happen.
19
+
20
+ **Screenshots**
21
+ If applicable, add screenshots to help explain your problem.
22
+
23
+ **Additional context**
24
+ Add any other context about the problem here.
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: Feature request
3
+ about: Suggest an idea for this project
4
+
5
+ ---
6
+
7
+ **Is your feature request related to a problem? Please describe.**
8
+ A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
9
+
10
+ **Describe the solution you'd like**
11
+ A clear and concise description of what you want to happen.
12
+
13
+ **Describe alternatives you've considered**
14
+ A clear and concise description of any alternative solutions or features you've considered.
15
+
16
+ **Additional context**
17
+ Add any other context or screenshots about the feature request here.
data/README.md CHANGED
@@ -1 +1,82 @@
1
- # Work in process
1
+ ## Take2
2
+ #
3
+ Define rules for retrying behavior.
4
+ Yield block of code into the public api of the take2.
5
+ Things getting take two :)
6
+
7
+ ## Install
8
+ #
9
+ ```
10
+ gem install take2
11
+ ```
12
+ ## Examples
13
+ #
14
+ ```
15
+ class KratosService
16
+ include Take2
17
+
18
+
19
+ number_of_retries 3
20
+
21
+ # Could be configured globally or on class level.
22
+ retriable_errors Net::HTTPRetriableError, Net::HTTPServerError
23
+
24
+ # Retry unless the response status is 5xx. The implementation is dependent of the http lib in use.
25
+ retriable_condition proc { |error| error.response.code < 500 }
26
+
27
+ # Defines callable code to run before next retry. Could be an out put to some logger.
28
+ on_retry proc { |error, tries| puts "#{self.name} - Retrying.. #{tries} of #{self.retriable_configuration[:retries]} (#{error})" }
29
+
30
+ sleep_before_retry 3.3
31
+
32
+ def call_boy
33
+ call_api_with_retry do
34
+ # Some logic that might raise..
35
+ # If it will raise retriable, magic happens.
36
+ # If not the original error re raised
37
+
38
+ raise Net::HTTPRetriableError.new 'Release the Kraken...many times!!', nil
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ KratosService.new.call_boy =>
45
+ KratosService - Retrying.. 3 of 3 (Release the Kraken...many times!!)
46
+ KratosService - Retrying.. 2 of 3 (Release the Kraken...many times!!)
47
+ KratosService - Retrying.. 1 of 3 (Release the Kraken...many times!!)
48
+ # After the retrying is done, original error re-raised
49
+ Net::HTTPRetriableError: Release the Kraken...many times!!
50
+
51
+ # Not wrapping with method
52
+ KratosService.new.call_api_with_retry { 1 / 0 }
53
+
54
+ # Or..
55
+ Class.new { include Take2 }.new.call_api_with_retry { 1 / 0 }
56
+
57
+
58
+ # Current configuration hash
59
+ KratosService.retriable_configuration
60
+
61
+ ```
62
+
63
+ ## Configurations
64
+ #### could be implemented as rails initializer
65
+ #
66
+ ```
67
+ # config/initializers/take2.rb
68
+
69
+ Take2.configure do |config|
70
+ config.retries = 3
71
+ config.retriable = [
72
+ Net::HTTPServerError,
73
+ Net::HTTPServerException,
74
+ Net::HTTPRetriableError,
75
+ Errno::ECONNRESET,
76
+ IOError
77
+ ].freeze
78
+ config.retry_condition_proc = proc {false}
79
+ config.time_to_sleep = nil
80
+ config.retry_proc = proc {Rails.logger.info "Retry message"}
81
+ end
82
+ ```
@@ -39,9 +39,7 @@ module Take2
39
39
  # number_of_retries 3
40
40
  # retriable_errors Net::HTTPRetriableError, Net::HTTPServerError
41
41
  # retriable_condition proc { |error| response_status(error.response) < 500 }
42
- # on_retry proc do |error, tries|
43
- # puts "#{self.class.name} - Retrying.. #{tries} of #{self.class.retriable_configuration[:retries]} (#{error})"
44
- # end
42
+ # on_retry proc { |error, tries| puts "#{self.name} - Retrying.. #{tries} of #{self.retriable_configuration[:retries]} (#{error})" }
45
43
  # sleep_before_retry 3
46
44
  #
47
45
  # def give_me_food
@@ -1,3 +1,3 @@
1
1
  module Take2
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: take2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Magids
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-12 00:00:00.000000000 Z
11
+ date: 2018-09-13 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Easily define Take2 / retry behavior for API wrappers, service objects
14
14
  or a single method.
@@ -18,6 +18,8 @@ executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
22
+ - ".github/ISSUE_TEMPLATE/feature_request.md"
21
23
  - ".gitignore"
22
24
  - CHANGELOG.md
23
25
  - Gemfile