cpi-event-connector 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,6 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "justinf-unification_assertion"
23
23
 
24
24
  s.add_runtime_dependency "bunny"
25
- s.add_runtime_dependency "activesupport", "~> 3"
25
+ s.add_runtime_dependency "activesupport", "~> 3.1.4"
26
26
  s.add_runtime_dependency "uuidtools", "~> 2.1.2"
27
27
  end
@@ -7,14 +7,14 @@ module Cpi
7
7
  @params = params
8
8
  end
9
9
 
10
- def transmit(message)
11
- begin
10
+ def transmit(message, options = nil)
11
+ options ||= {}
12
+ options[:before_retry] = lambda { @started = false }
13
+
14
+ with_retries options do
12
15
  start
13
16
  @exchange.publish(message, :key => @queue_name, :persistent => true)
14
17
  @bunny.tx_commit
15
- rescue Bunny::ServerDownError, Bunny::ForcedConnectionCloseError, Bunny::ConnectionError
16
- @started = false
17
- retry
18
18
  end
19
19
  end
20
20
 
@@ -31,5 +31,29 @@ module Cpi
31
31
  @queue = @bunny.queue(@queue_name, :durable => true)
32
32
  @started = true
33
33
  end
34
+
35
+ def with_retries(*args, &block)
36
+ options = args.extract_options!
37
+ exceptions = args
38
+
39
+ options[:retries] ||= 3
40
+ options[:sleep] ||= 0
41
+ options[:before_retry] ||= lambda {}
42
+ exceptions = [Exception] if exceptions.empty?
43
+
44
+ retried = 0
45
+ begin
46
+ yield
47
+ rescue *exceptions => e
48
+ if retried < options[:retries]
49
+ retried += 1
50
+ sleep options[:sleep]
51
+ options[:before_retry].call
52
+ retry
53
+ else
54
+ raise e
55
+ end
56
+ end
57
+ end
34
58
  end
35
59
  end
@@ -1,4 +1,4 @@
1
- require 'active_support'
1
+ require 'active_support/core_ext/string'
2
2
 
3
3
  module Cpi
4
4
  class Event
@@ -1,3 +1,3 @@
1
1
  module Cpi
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
@@ -77,5 +77,15 @@ describe Cpi::Connector do
77
77
 
78
78
  connector.transmit("event")
79
79
  end
80
+
81
+ it "retries failed transmissions" do
82
+ exchange.should_receive(:publish) do
83
+ raise Exception
84
+ end.twice
85
+
86
+ expect do
87
+ connector.transmit("event", :retries=> 1)
88
+ end.to raise_error(Exception)
89
+ end
80
90
  end
81
91
  end
metadata CHANGED
@@ -1,118 +1,119 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cpi-event-connector
3
- version: !ruby/object:Gem::Version
4
- hash: 13
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.10
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 9
10
- version: 0.0.9
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Nulogy
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-05-10 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-23 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: backports
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: backports
32
+ requirement: !ruby/object:Gem::Requirement
38
33
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
46
38
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: justinf-unification_assertion
50
39
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
52
41
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: justinf-unification_assertion
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
60
54
  type: :development
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: bunny
64
55
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
66
57
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: bunny
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
74
70
  type: :runtime
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: activesupport
78
71
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
80
73
  none: false
81
- requirements:
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: activesupport
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
82
83
  - - ~>
83
- - !ruby/object:Gem::Version
84
- hash: 5
85
- segments:
86
- - 3
87
- version: "3"
84
+ - !ruby/object:Gem::Version
85
+ version: 3.1.4
88
86
  type: :runtime
89
- version_requirements: *id005
90
- - !ruby/object:Gem::Dependency
91
- name: uuidtools
92
87
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 3.1.4
94
+ - !ruby/object:Gem::Dependency
95
+ name: uuidtools
96
+ requirement: !ruby/object:Gem::Requirement
94
97
  none: false
95
- requirements:
98
+ requirements:
96
99
  - - ~>
97
- - !ruby/object:Gem::Version
98
- hash: 15
99
- segments:
100
- - 2
101
- - 1
102
- - 2
100
+ - !ruby/object:Gem::Version
103
101
  version: 2.1.2
104
102
  type: :runtime
105
- version_requirements: *id006
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 2.1.2
106
110
  description: see summary
107
- email:
111
+ email:
108
112
  - engineering@nulogy.com
109
113
  executables: []
110
-
111
114
  extensions: []
112
-
113
115
  extra_rdoc_files: []
114
-
115
- files:
116
+ files:
116
117
  - .gitignore
117
118
  - Gemfile
118
119
  - Gemfile.lock
@@ -129,38 +130,28 @@ files:
129
130
  - spec/integration_spec.rb
130
131
  - spec/spec_helper.rb
131
132
  - spec_helper.rb
132
- homepage: ""
133
+ homepage: ''
133
134
  licenses: []
134
-
135
135
  post_install_message:
136
136
  rdoc_options: []
137
-
138
- require_paths:
137
+ require_paths:
139
138
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
139
+ required_ruby_version: !ruby/object:Gem::Requirement
141
140
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
146
  none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
158
151
  requirements: []
159
-
160
152
  rubyforge_project:
161
- rubygems_version: 1.8.15
153
+ rubygems_version: 1.8.24
162
154
  signing_key:
163
155
  specification_version: 3
164
156
  summary: Sends events to CPI
165
157
  test_files: []
166
-