resque_jobs_tree 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.
@@ -25,7 +25,7 @@ class ResqueJobsTree::Node
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def after_perform
|
28
|
-
run_callback
|
28
|
+
run_callback(:after_perform)
|
29
29
|
if root?
|
30
30
|
tree.finish
|
31
31
|
else
|
@@ -91,6 +91,13 @@ class ResqueJobsTree::Node
|
|
91
91
|
def run_callback callback
|
92
92
|
callback_block = definition.send callback
|
93
93
|
callback_block.call(*resources) if callback_block.kind_of? Proc
|
94
|
+
rescue
|
95
|
+
if callback == :after_perform
|
96
|
+
puts "[ResqueJobsTree::Tree] after_perform callback of node #{definition.tree.name}##{name} has failed."\
|
97
|
+
" Continuing for cleanup."
|
98
|
+
else
|
99
|
+
raise
|
100
|
+
end
|
94
101
|
end
|
95
102
|
|
96
103
|
end
|
@@ -23,10 +23,16 @@ class ResqueJobsTree::Tree
|
|
23
23
|
end
|
24
24
|
end
|
25
25
|
|
26
|
-
%w(before_perform after_perform
|
26
|
+
%w(before_perform after_perform).each do |callback|
|
27
27
|
class_eval %Q{def #{callback} ; run_callback :#{callback} ; end}
|
28
28
|
end
|
29
29
|
|
30
|
+
def on_failure
|
31
|
+
run_callback :on_failure
|
32
|
+
rescue
|
33
|
+
puts "[ResqueJobsTree::Tree] on_failure callback of tree #{name} has failed. Continuing for cleanup."
|
34
|
+
end
|
35
|
+
|
30
36
|
def root
|
31
37
|
@root ||= ResqueJobsTree::Node.new(definition.root, resources, nil, self)
|
32
38
|
end
|
data/test/process_test.rb
CHANGED
@@ -199,6 +199,39 @@ class ProcessTest < MiniTest::Unit::TestCase
|
|
199
199
|
Resque.redis.smembers("ResqueJobsTree:Node:[\"tree1\",\"job1\"]:childs")
|
200
200
|
end
|
201
201
|
|
202
|
+
def test_exception_in_on_failure_callback
|
203
|
+
Resque.inline = false
|
204
|
+
tree_definition = ResqueJobsTree::Factory.create :tree1 do
|
205
|
+
on_failure { raise 'an unexpected exception' }
|
206
|
+
root :job1 do
|
207
|
+
perform { raise ExpectedException, 'an expected exception'}
|
208
|
+
end
|
209
|
+
end
|
210
|
+
tree_definition.spawn([]).launch
|
211
|
+
assert_raises ExpectedException do
|
212
|
+
silenced_stdout do
|
213
|
+
run_resque_workers tree_definition.name
|
214
|
+
end
|
215
|
+
end
|
216
|
+
assert_equal ['queues'], Resque.redis.keys
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_exception_in_after_perform_callback
|
220
|
+
Resque.inline = false
|
221
|
+
tree_definition = ResqueJobsTree::Factory.create :tree1 do
|
222
|
+
root :job1 do
|
223
|
+
after_perform { raise 'an unexpected exception' }
|
224
|
+
perform {}
|
225
|
+
end
|
226
|
+
end
|
227
|
+
assert tree_definition.find(:job1).after_perform.kind_of?(Proc)
|
228
|
+
tree_definition.spawn([]).launch
|
229
|
+
silenced_stdout do
|
230
|
+
run_resque_workers tree_definition.name
|
231
|
+
end
|
232
|
+
assert_equal [], Resque.redis.keys
|
233
|
+
end
|
234
|
+
|
202
235
|
private
|
203
236
|
|
204
237
|
def assert_redis_empty
|
@@ -211,4 +244,12 @@ class ProcessTest < MiniTest::Unit::TestCase
|
|
211
244
|
redis.srem 'queues', queue_name
|
212
245
|
end
|
213
246
|
|
247
|
+
def silenced_stdout
|
248
|
+
orig_stdout = $stdout
|
249
|
+
$stdout = File.new('/dev/null', 'w')
|
250
|
+
yield
|
251
|
+
ensure
|
252
|
+
$stdout = orig_stdout
|
253
|
+
end
|
254
|
+
|
214
255
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: resque_jobs_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|