beanstalk-worker 0.1.1 → 0.1.2

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.
@@ -2,7 +2,7 @@ $:.unshift File.dirname(__FILE__)
2
2
 
3
3
  module BeanStalk
4
4
  class Worker
5
- VERSION = '0.1.1'
5
+ VERSION = '0.1.2'
6
6
  end
7
7
  end
8
8
 
@@ -1,7 +1,7 @@
1
1
  require 'beanstalk-client'
2
2
 
3
3
  class BeanStalk::Worker
4
- attr_accessor :config, :log, :beanstalk, :stats
4
+ attr_accessor :config, :log, :connection, :stats
5
5
 
6
6
  def initialize(config = {})
7
7
  @config = BeanStalk::Worker::Config
@@ -21,22 +21,40 @@ class BeanStalk::Worker
21
21
  initialize_beanstalk
22
22
  end
23
23
 
24
- def initialize_beanstalk
25
- @beanstalk = Beanstalk::Pool.new([
24
+ def beanstalk
25
+ @connection ||= Beanstalk::Pool.new([
26
26
  BeanStalk::Worker::Config.beanstalk_uri
27
27
  ])
28
+ @logger.info("Connected to beanstalk")
29
+ rescue
30
+ @logger.error("Could not connect to beanstalk.")
31
+ reconnect
32
+ end
33
+
34
+ def initialize_beanstalk
35
+ # @beanstalk = Beanstalk::Pool.new([
36
+ # BeanStalk::Worker::Config.beanstalk_uri
37
+ # ])
28
38
 
29
- @beanstalk.watch(@config[:beanstalk][:tube])
30
- @beanstalk.use(@config[:beanstalk][:tube])
31
- @beanstalk.ignore('default')
39
+ beanstalk.watch(@config[:beanstalk][:tube])
40
+ beanstalk.use(@config[:beanstalk][:tube])
41
+ beanstalk.ignore('default')
32
42
  rescue
33
- @logger.error "Could not connect to beanstalk."
43
+ @logger.error("Could not connect to beanstalk.")
44
+ reconnect
45
+ end
46
+
47
+ def reconnect
48
+ @logger.error("Sleeping 30 seconds")
49
+ sleep(30)
50
+ @logger.error("Attempting to reconnect")
51
+ start
34
52
  end
35
53
 
36
54
  def start(received = -1)
37
55
  while (received == -1) || (@stats['received'] < received)
38
56
  begin
39
- job = @beanstalk.reserve
57
+ job = beanstalk.reserve
40
58
 
41
59
  @logger.debug("job #{job.inspect}")
42
60
  @logger.debug("job #{job.body.inspect}")
@@ -44,6 +62,9 @@ class BeanStalk::Worker
44
62
  @stats['received'] += 1
45
63
 
46
64
  job.delete if work(job)
65
+ rescue Beanstalk::NotConnected => e
66
+ @logger.error("Beanstalk disconnected")
67
+ reconnect
47
68
  rescue Exception => e
48
69
  @logger.error("Caught exception #{e.to_s}")
49
70
  exit
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beanstalk-worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Artem Veremey
@@ -9,25 +10,28 @@ authors:
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2013-08-17 00:00:00.000000000 Z
13
+ date: 2013-08-28 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: beanstalk-client
16
17
  requirement: !ruby/object:Gem::Requirement
18
+ none: false
17
19
  requirements:
18
- - - '>='
20
+ - - ! '>='
19
21
  - !ruby/object:Gem::Version
20
22
  version: '0'
21
23
  type: :runtime
22
24
  prerelease: false
23
25
  version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
24
27
  requirements:
25
- - - '>='
28
+ - - ! '>='
26
29
  - !ruby/object:Gem::Version
27
30
  version: '0'
28
31
  - !ruby/object:Gem::Dependency
29
32
  name: mixlib-log
30
33
  requirement: !ruby/object:Gem::Requirement
34
+ none: false
31
35
  requirements:
32
36
  - - ~>
33
37
  - !ruby/object:Gem::Version
@@ -35,6 +39,7 @@ dependencies:
35
39
  type: :runtime
36
40
  prerelease: false
37
41
  version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
38
43
  requirements:
39
44
  - - ~>
40
45
  - !ruby/object:Gem::Version
@@ -42,6 +47,7 @@ dependencies:
42
47
  - !ruby/object:Gem::Dependency
43
48
  name: mixlib-config
44
49
  requirement: !ruby/object:Gem::Requirement
50
+ none: false
45
51
  requirements:
46
52
  - - ~>
47
53
  - !ruby/object:Gem::Version
@@ -49,6 +55,7 @@ dependencies:
49
55
  type: :runtime
50
56
  prerelease: false
51
57
  version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
52
59
  requirements:
53
60
  - - ~>
54
61
  - !ruby/object:Gem::Version
@@ -56,6 +63,7 @@ dependencies:
56
63
  - !ruby/object:Gem::Dependency
57
64
  name: mixlib-log-json
58
65
  requirement: !ruby/object:Gem::Requirement
66
+ none: false
59
67
  requirements:
60
68
  - - ~>
61
69
  - !ruby/object:Gem::Version
@@ -63,6 +71,7 @@ dependencies:
63
71
  type: :runtime
64
72
  prerelease: false
65
73
  version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
66
75
  requirements:
67
76
  - - ~>
68
77
  - !ruby/object:Gem::Version
@@ -70,6 +79,7 @@ dependencies:
70
79
  - !ruby/object:Gem::Dependency
71
80
  name: yajl-ruby
72
81
  requirement: !ruby/object:Gem::Requirement
82
+ none: false
73
83
  requirements:
74
84
  - - ~>
75
85
  - !ruby/object:Gem::Version
@@ -77,6 +87,7 @@ dependencies:
77
87
  type: :runtime
78
88
  prerelease: false
79
89
  version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
80
91
  requirements:
81
92
  - - ~>
82
93
  - !ruby/object:Gem::Version
@@ -84,6 +95,7 @@ dependencies:
84
95
  - !ruby/object:Gem::Dependency
85
96
  name: activesupport
86
97
  requirement: !ruby/object:Gem::Requirement
98
+ none: false
87
99
  requirements:
88
100
  - - ~>
89
101
  - !ruby/object:Gem::Version
@@ -91,6 +103,7 @@ dependencies:
91
103
  type: :runtime
92
104
  prerelease: false
93
105
  version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
94
107
  requirements:
95
108
  - - ~>
96
109
  - !ruby/object:Gem::Version
@@ -98,62 +111,71 @@ dependencies:
98
111
  - !ruby/object:Gem::Dependency
99
112
  name: rspec
100
113
  requirement: !ruby/object:Gem::Requirement
114
+ none: false
101
115
  requirements:
102
- - - '>='
116
+ - - ! '>='
103
117
  - !ruby/object:Gem::Version
104
118
  version: 2.13.0
105
119
  type: :development
106
120
  prerelease: false
107
121
  version_requirements: !ruby/object:Gem::Requirement
122
+ none: false
108
123
  requirements:
109
- - - '>='
124
+ - - ! '>='
110
125
  - !ruby/object:Gem::Version
111
126
  version: 2.13.0
112
127
  - !ruby/object:Gem::Dependency
113
128
  name: yard
114
129
  requirement: !ruby/object:Gem::Requirement
130
+ none: false
115
131
  requirements:
116
- - - '>'
132
+ - - ! '>'
117
133
  - !ruby/object:Gem::Version
118
134
  version: '0.8'
119
135
  type: :development
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
138
+ none: false
122
139
  requirements:
123
- - - '>'
140
+ - - ! '>'
124
141
  - !ruby/object:Gem::Version
125
142
  version: '0.8'
126
143
  - !ruby/object:Gem::Dependency
127
144
  name: rdoc
128
145
  requirement: !ruby/object:Gem::Requirement
146
+ none: false
129
147
  requirements:
130
- - - '>'
148
+ - - ! '>'
131
149
  - !ruby/object:Gem::Version
132
150
  version: '4.0'
133
151
  type: :development
134
152
  prerelease: false
135
153
  version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
136
155
  requirements:
137
- - - '>'
156
+ - - ! '>'
138
157
  - !ruby/object:Gem::Version
139
158
  version: '4.0'
140
159
  - !ruby/object:Gem::Dependency
141
160
  name: cucumber
142
161
  requirement: !ruby/object:Gem::Requirement
162
+ none: false
143
163
  requirements:
144
- - - '>='
164
+ - - ! '>='
145
165
  - !ruby/object:Gem::Version
146
166
  version: '0'
147
167
  type: :development
148
168
  prerelease: false
149
169
  version_requirements: !ruby/object:Gem::Requirement
170
+ none: false
150
171
  requirements:
151
- - - '>='
172
+ - - ! '>='
152
173
  - !ruby/object:Gem::Version
153
174
  version: '0'
154
175
  - !ruby/object:Gem::Dependency
155
176
  name: bundler
156
177
  requirement: !ruby/object:Gem::Requirement
178
+ none: false
157
179
  requirements:
158
180
  - - ~>
159
181
  - !ruby/object:Gem::Version
@@ -161,6 +183,7 @@ dependencies:
161
183
  type: :development
162
184
  prerelease: false
163
185
  version_requirements: !ruby/object:Gem::Requirement
186
+ none: false
164
187
  requirements:
165
188
  - - ~>
166
189
  - !ruby/object:Gem::Version
@@ -168,6 +191,7 @@ dependencies:
168
191
  - !ruby/object:Gem::Dependency
169
192
  name: jeweler
170
193
  requirement: !ruby/object:Gem::Requirement
194
+ none: false
171
195
  requirements:
172
196
  - - ~>
173
197
  - !ruby/object:Gem::Version
@@ -175,6 +199,7 @@ dependencies:
175
199
  type: :development
176
200
  prerelease: false
177
201
  version_requirements: !ruby/object:Gem::Requirement
202
+ none: false
178
203
  requirements:
179
204
  - - ~>
180
205
  - !ruby/object:Gem::Version
@@ -182,29 +207,33 @@ dependencies:
182
207
  - !ruby/object:Gem::Dependency
183
208
  name: beanstalk-client-rspec
184
209
  requirement: !ruby/object:Gem::Requirement
210
+ none: false
185
211
  requirements:
186
- - - '>='
212
+ - - ! '>='
187
213
  - !ruby/object:Gem::Version
188
214
  version: '0'
189
215
  type: :development
190
216
  prerelease: false
191
217
  version_requirements: !ruby/object:Gem::Requirement
218
+ none: false
192
219
  requirements:
193
- - - '>='
220
+ - - ! '>='
194
221
  - !ruby/object:Gem::Version
195
222
  version: '0'
196
223
  - !ruby/object:Gem::Dependency
197
224
  name: simplecov
198
225
  requirement: !ruby/object:Gem::Requirement
226
+ none: false
199
227
  requirements:
200
- - - '>='
228
+ - - ! '>='
201
229
  - !ruby/object:Gem::Version
202
230
  version: '0'
203
231
  type: :development
204
232
  prerelease: false
205
233
  version_requirements: !ruby/object:Gem::Requirement
234
+ none: false
206
235
  requirements:
207
- - - '>='
236
+ - - ! '>='
208
237
  - !ruby/object:Gem::Version
209
238
  version: '0'
210
239
  description: Beanstalkd Worker base class
@@ -236,26 +265,29 @@ files:
236
265
  homepage: http://github.com/aia/beanstalk-worker
237
266
  licenses:
238
267
  - MIT
239
- metadata: {}
240
268
  post_install_message:
241
269
  rdoc_options: []
242
270
  require_paths:
243
271
  - lib
244
272
  required_ruby_version: !ruby/object:Gem::Requirement
273
+ none: false
245
274
  requirements:
246
- - - '>='
275
+ - - ! '>='
247
276
  - !ruby/object:Gem::Version
248
277
  version: '0'
278
+ segments:
279
+ - 0
280
+ hash: 3343727007483199408
249
281
  required_rubygems_version: !ruby/object:Gem::Requirement
282
+ none: false
250
283
  requirements:
251
- - - '>='
284
+ - - ! '>='
252
285
  - !ruby/object:Gem::Version
253
286
  version: '0'
254
287
  requirements: []
255
288
  rubyforge_project:
256
- rubygems_version: 2.0.5
289
+ rubygems_version: 1.8.25
257
290
  signing_key:
258
- specification_version: 4
291
+ specification_version: 3
259
292
  summary: Beanstalkd Worker base class
260
293
  test_files: []
261
- has_rdoc:
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 77e7b0abdfdd60835bddcef4024d49042b838c2a
4
- data.tar.gz: 2a9ab5b5251df3270d6868f7f760bd63ee1f09e6
5
- SHA512:
6
- metadata.gz: 18a60f6d317de7c164522f2864a6ed1b76d751da38558c68e53bbbe00ea7c262981b71d2a789384d9f336ee0734bfe684bc02b1b77e056dc70f5b6b3db3d7c31
7
- data.tar.gz: 4d603dba338fe466c7b5becd6215d0a95d25204e831c9b1718d74672356ae104bb2ba06d43259469968e917371932b7ceaf91e02b4686f78ba51e4dfbbf7ef80