vx-container_connector 0.2.3 → 0.2.4
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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8d1d2a512151ac69a604b6756aa939d6aa6be35
|
4
|
+
data.tar.gz: e5e247f6562b4e15779f41098c1ed97d5ffbc72f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a375c89e7b098c1011f7be78ddb00f04a27d1b7fdcd7b00332cb175136243c8c68c7fb2c51ceaef7b0a3c6db4f00eb7302f31a7135fc8668092997dae84315fe
|
7
|
+
data.tar.gz: 1a352e186e139f0a22827903ebffe2a2a565cfe4b1d0f846608f51f0cff45ceff4c857401672b21abb8863bca63b234112d5d8ce4f727cfaf688a63b66011cc8
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Vx
|
2
|
+
module ContainerConnector
|
3
|
+
module Retriable
|
4
|
+
# This will catch any exception and retry twice (three tries total):
|
5
|
+
# with_retries { ... }
|
6
|
+
#
|
7
|
+
# This will catch any exception and retry four times (five tries total):
|
8
|
+
# with_retries(:limit => 5) { ... }
|
9
|
+
#
|
10
|
+
# This will catch a specific exception and retry once (two tries total):
|
11
|
+
# with_retries(Some::Error, :limit => 2) { ... }
|
12
|
+
#
|
13
|
+
# You can also sleep inbetween tries. This is helpful if you're hoping
|
14
|
+
# that some external service recovers from its issues.
|
15
|
+
# with_retries(Service::Error, :sleep => 1) { ... }
|
16
|
+
#
|
17
|
+
def with_retries(*args, &block)
|
18
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
19
|
+
exceptions = args
|
20
|
+
|
21
|
+
options[:limit] ||= 3
|
22
|
+
options[:sleep] ||= 0
|
23
|
+
exceptions = [Exception] if exceptions.empty?
|
24
|
+
|
25
|
+
retried = 0
|
26
|
+
begin
|
27
|
+
yield
|
28
|
+
rescue *exceptions => e
|
29
|
+
if retried + 1 < options[:limit]
|
30
|
+
retried += 1
|
31
|
+
sleep options[:sleep]
|
32
|
+
retry
|
33
|
+
else
|
34
|
+
raise e
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -4,8 +4,10 @@ require File.expand_path("../container_connector/errors", __FILE__)
|
|
4
4
|
module Vx
|
5
5
|
module ContainerConnector
|
6
6
|
|
7
|
-
autoload :Local,
|
8
|
-
autoload :Docker,
|
7
|
+
autoload :Local, File.expand_path("../container_connector/local", __FILE__)
|
8
|
+
autoload :Docker, File.expand_path("../container_connector/docker", __FILE__)
|
9
|
+
autoload :Retriable, File.expand_path("../container_connector/mixin/retriable", __FILE__)
|
10
|
+
|
9
11
|
|
10
12
|
extend self
|
11
13
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class TestRetriable
|
4
|
+
include Vx::ContainerConnector::Retriable
|
5
|
+
|
6
|
+
class Error < Exception ; end
|
7
|
+
end
|
8
|
+
|
9
|
+
describe Vx::ContainerConnector::Retriable do
|
10
|
+
let(:proxy) { TestRetriable.new }
|
11
|
+
|
12
|
+
it "should rescue 2 times" do
|
13
|
+
expect(test_retriable(2)).to eq :pass
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should fail on 3 attempt" do
|
17
|
+
expect {
|
18
|
+
test_retriable(3)
|
19
|
+
}.to raise_error(TestRetriable::Error, "0")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_retriable(n)
|
23
|
+
proxy.with_retries(TestRetriable::Error, limit: 3, sleep: 0.1) do
|
24
|
+
if n != 0
|
25
|
+
n -= 1
|
26
|
+
raise TestRetriable::Error.new(n.to_s)
|
27
|
+
end
|
28
|
+
:pass
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vx-container_connector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Galinsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: docker-api
|
@@ -113,10 +113,12 @@ files:
|
|
113
113
|
- lib/vx/container_connector/errors.rb
|
114
114
|
- lib/vx/container_connector/local.rb
|
115
115
|
- lib/vx/container_connector/local/spawner.rb
|
116
|
+
- lib/vx/container_connector/mixin/retriable.rb
|
116
117
|
- lib/vx/container_connector/version.rb
|
117
118
|
- spec/lib/container_connector_spec.rb
|
118
119
|
- spec/lib/docker_spec.rb
|
119
120
|
- spec/lib/local_spec.rb
|
121
|
+
- spec/lib/mixin/retriable_spec.rb
|
120
122
|
- spec/spec_helper.rb
|
121
123
|
- vx-container_connector.gemspec
|
122
124
|
homepage: ''
|
@@ -147,4 +149,5 @@ test_files:
|
|
147
149
|
- spec/lib/container_connector_spec.rb
|
148
150
|
- spec/lib/docker_spec.rb
|
149
151
|
- spec/lib/local_spec.rb
|
152
|
+
- spec/lib/mixin/retriable_spec.rb
|
150
153
|
- spec/spec_helper.rb
|