cpi-event-connector 0.0.9 → 0.0.10

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.
@@ -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
-