stalker 0.4.0 → 0.4.1
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.
- data/README.md +10 -1
- data/VERSION +1 -1
- data/lib/stalker.rb +18 -4
- data/test/stalker_test.rb +20 -2
- metadata +4 -4
data/README.md
CHANGED
@@ -67,6 +67,15 @@ In a production environment you may run one or more high-priority workers (limit
|
|
67
67
|
$ for i in 1 2; do stalk jobs.rb email.send > log/urgent-worker.log 2>&1; end
|
68
68
|
$ for i in 1 2 3 4; do stalk jobs.rb > log/worker.log 2>&1; end
|
69
69
|
|
70
|
+
Error Handling
|
71
|
+
-------------
|
72
|
+
|
73
|
+
If you include an `error` block in your jobs definition, that block will be invoked when a worker encounters an error. You might use this to report errors to an external monitoring service:
|
74
|
+
|
75
|
+
error do |e|
|
76
|
+
Exceptional.handle(e)
|
77
|
+
end
|
78
|
+
|
70
79
|
Tidbits
|
71
80
|
-------
|
72
81
|
|
@@ -92,7 +101,7 @@ Meta
|
|
92
101
|
|
93
102
|
Created by Adam Wiggins
|
94
103
|
|
95
|
-
Patches from Jamie Cobbett
|
104
|
+
Patches from Jamie Cobbett, Scott Water, Keith Rarick, Mark McGranaghan
|
96
105
|
|
97
106
|
Heavily inspired by [Minion](http://github.com/orionz/minion) by Orion Henry
|
98
107
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.1
|
data/lib/stalker.rb
CHANGED
@@ -20,6 +20,10 @@ module Stalker
|
|
20
20
|
@@handlers[j] = block
|
21
21
|
end
|
22
22
|
|
23
|
+
def error(&blk)
|
24
|
+
@@error_handler = blk
|
25
|
+
end
|
26
|
+
|
23
27
|
class NoJobsDefined < RuntimeError; end
|
24
28
|
class NoSuchJob < RuntimeError; end
|
25
29
|
|
@@ -62,15 +66,16 @@ module Stalker
|
|
62
66
|
rescue SystemExit
|
63
67
|
raise
|
64
68
|
rescue => e
|
65
|
-
|
69
|
+
log_error exception_message(e)
|
66
70
|
job.bury rescue nil
|
67
71
|
log_job_end(name, 'failed')
|
72
|
+
error_handler.call(e) if error_handler
|
68
73
|
end
|
69
74
|
|
70
75
|
def failed_connection(e)
|
71
|
-
|
72
|
-
|
73
|
-
|
76
|
+
log_error exception_message(e)
|
77
|
+
log_error "*** Failed connection to #{beanstalk_url}"
|
78
|
+
log_error "*** Check that beanstalkd is running (or set a different BEANSTALK_URL)"
|
74
79
|
exit 1
|
75
80
|
end
|
76
81
|
|
@@ -97,6 +102,10 @@ module Stalker
|
|
97
102
|
puts "[#{Time.now}] #{msg}"
|
98
103
|
end
|
99
104
|
|
105
|
+
def log_error(msg)
|
106
|
+
STDERR.puts msg
|
107
|
+
end
|
108
|
+
|
100
109
|
def beanstalk
|
101
110
|
@@beanstalk ||= Beanstalk::Pool.new([ beanstalk_host_and_port ])
|
102
111
|
end
|
@@ -128,7 +137,12 @@ module Stalker
|
|
128
137
|
@@handlers.keys
|
129
138
|
end
|
130
139
|
|
140
|
+
def error_handler
|
141
|
+
@@error_handler
|
142
|
+
end
|
143
|
+
|
131
144
|
def clear!
|
132
145
|
@@handlers = nil
|
146
|
+
@@error_handler = nil
|
133
147
|
end
|
134
148
|
end
|
data/test/stalker_test.rb
CHANGED
@@ -3,14 +3,15 @@ require 'contest'
|
|
3
3
|
require 'mocha'
|
4
4
|
|
5
5
|
module Stalker
|
6
|
-
def log(msg)
|
7
|
-
end
|
6
|
+
def log(msg); end
|
7
|
+
def log_error(msg); end
|
8
8
|
end
|
9
9
|
|
10
10
|
class StalkerTest < Test::Unit::TestCase
|
11
11
|
setup do
|
12
12
|
Stalker.clear!
|
13
13
|
$result = -1
|
14
|
+
$handled = false
|
14
15
|
end
|
15
16
|
|
16
17
|
test "enqueue and work a job" do
|
@@ -21,4 +22,21 @@ class StalkerTest < Test::Unit::TestCase
|
|
21
22
|
Stalker.work_one_job
|
22
23
|
assert_equal val, $result
|
23
24
|
end
|
25
|
+
|
26
|
+
test "invoke error handler when defined" do
|
27
|
+
Stalker.error { |e| $handled = true }
|
28
|
+
Stalker.job('my.job') { fail }
|
29
|
+
Stalker.enqueue('my.job')
|
30
|
+
Stalker.prep
|
31
|
+
Stalker.work_one_job
|
32
|
+
assert_equal true, $handled
|
33
|
+
end
|
34
|
+
|
35
|
+
test "continue working when error handler not defined" do
|
36
|
+
Stalker.job('my.job') { fail }
|
37
|
+
Stalker.enqueue('my.job')
|
38
|
+
Stalker.prep
|
39
|
+
Stalker.work_one_job
|
40
|
+
assert_equal false, $handled
|
41
|
+
end
|
24
42
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stalker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Adam Wiggins
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-05 00:00:00 -07:00
|
19
19
|
default_executable: stalk
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|