retry_unsafe_method 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +9 -4
- data/Gemfile +8 -0
- data/README.md +19 -1
- data/lib/retry_unsafe_method/retry_unsafe_method.rb +5 -0
- data/lib/retry_unsafe_method/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4409e6614374c70d00b65bcd7295fc1566f900a7
|
4
|
+
data.tar.gz: 8227b9dd81535ee0ba1fec8e670b2b9f3a564e56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 326413ba145238c5fd6454a44fe0c9fb8446b3e26f7793f3cf296cb014045113b3f09298586437080ea6300bc848680016ba34e12546ffc81e622813d8a717e5
|
7
|
+
data.tar.gz: 4cbd2389020f77edbd6a9a7ed15f859f0521bd200878b62febc0ea638e2e84a9b2c35d610a6ec63b0d4712651f7f339e939c5cab51f1b19b16d47da752844dd1
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -2,9 +2,14 @@ sudo: false
|
|
2
2
|
language: ruby
|
3
3
|
rvm:
|
4
4
|
- 1.9.3
|
5
|
-
- 2.0
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
-
|
5
|
+
- 2.0
|
6
|
+
- 2.1
|
7
|
+
- 2.2
|
8
|
+
- jruby
|
9
9
|
|
10
10
|
before_install: gem install bundler -v 1.8.9 --no-ri --no-rdoc
|
11
|
+
script: bundle exec rspec spec
|
12
|
+
|
13
|
+
addons:
|
14
|
+
code_climate:
|
15
|
+
repo_token: 89a115773b9fcb5f81b919fee61c24162269c61447389e14bffde1153cd0d00d
|
data/Gemfile
CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in retry_unsafe_method.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :test do
|
7
|
+
gem 'codeclimate-test-reporter', require: nil
|
8
|
+
|
9
|
+
platform :ruby_18, :ruby_19 do
|
10
|
+
gem 'simplecov', '>= 0.10', '< 0.12', require: nil
|
11
|
+
end
|
12
|
+
end
|
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
# RetryUnsafeMethod
|
2
|
-
|
3
2
|
Allow easily make methods retriable
|
4
3
|
|
4
|
+
[![Version ](http://img.shields.io/gem/v/retry_unsafe_method.svg) ](https://rubygems.org/gems/retry_unsafe_method)
|
5
|
+
[![Travis CI](http://img.shields.io/travis/senid231/retry_unsafe_method.svg)](https://travis-ci.org/senid231/retry_unsafe_method)
|
6
|
+
[![CodeClimate](https://codeclimate.com/github/senid231/retry_unsafe_method/badges/gpa.svg)](https://codeclimate.com/github/senid231/retry_unsafe_method/badges)
|
7
|
+
[![Coverage](https://codeclimate.com/github/senid231/retry_unsafe_method/badges/coverage.svg)](https://codeclimate.com/github/senid231/retry_unsafe_method/badges)
|
8
|
+
|
5
9
|
## Installation
|
6
10
|
|
7
11
|
Add this line to your application's Gemfile:
|
@@ -29,8 +33,16 @@ and add after method definition
|
|
29
33
|
|
30
34
|
or
|
31
35
|
|
36
|
+
`retry_unsafe_method <method_name>, <retries_qty>, *<exceptions>`, <options>
|
37
|
+
|
38
|
+
or
|
39
|
+
|
32
40
|
`retry_unsafe_method <method_name>, <retries_qty>, &<block>`
|
33
41
|
|
42
|
+
or
|
43
|
+
|
44
|
+
`retry_unsafe_method <method_name>, <retries_qty>, <options>, &<block>`
|
45
|
+
|
34
46
|
```ruby
|
35
47
|
require 'retry_unsafe_method'
|
36
48
|
|
@@ -46,9 +58,15 @@ class A
|
|
46
58
|
|
47
59
|
retry_unsafe_method :some_method, 2, SomeError
|
48
60
|
# or
|
61
|
+
retry_unsafe_method :some_method, 2, SomeError, wait: 5
|
62
|
+
# or
|
49
63
|
retry_unsafe_method :some_method, 2 do |e|
|
50
64
|
e.is_a?(SomeError)
|
51
65
|
end
|
66
|
+
# or
|
67
|
+
retry_unsafe_method :some_method, 2, wait: 5 do |e|
|
68
|
+
e.is_a?(SomeError)
|
69
|
+
end
|
52
70
|
|
53
71
|
end
|
54
72
|
```
|
@@ -8,6 +8,10 @@ module RetryUnsafeMethod
|
|
8
8
|
module ClassMethods
|
9
9
|
|
10
10
|
def retry_unsafe_method(method_name, retry_count, *exceptions, &block)
|
11
|
+
options = exceptions.last.is_a?(Hash) ? exceptions.pop : {}
|
12
|
+
|
13
|
+
wait = options.delete(:wait)
|
14
|
+
wait = nil if wait && (!wait.is_a?(Numeric) || wait <= 0)
|
11
15
|
|
12
16
|
unless method_defined?(method_name) || private_method_defined?(method_name)
|
13
17
|
raise StandardError.new("method #{method_name} is not defined")
|
@@ -34,6 +38,7 @@ module RetryUnsafeMethod
|
|
34
38
|
|
35
39
|
if instance_variable_get(ivar) < retry_count
|
36
40
|
instance_variable_set(ivar, instance_variable_get(ivar) + 1)
|
41
|
+
sleep(wait) if wait
|
37
42
|
retry
|
38
43
|
else
|
39
44
|
remove_instance_variable(ivar)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retry_unsafe_method
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Talakevich
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -102,7 +102,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
104
|
rubyforge_project:
|
105
|
-
rubygems_version: 2.
|
105
|
+
rubygems_version: 2.6.6
|
106
106
|
signing_key:
|
107
107
|
specification_version: 4
|
108
108
|
summary: Allow to retry unsafe methods.
|