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.
@@ -9,7 +9,7 @@ class ResqueJobsTree::Definitions
9
9
  end
10
10
 
11
11
  def after_perform &block
12
- @before_perform ||= block
12
+ @after_perform ||= block
13
13
  end
14
14
 
15
15
  end
@@ -25,7 +25,7 @@ class ResqueJobsTree::Node
25
25
  end
26
26
 
27
27
  def after_perform
28
- run_callback :after_perform
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 on_failure).each do |callback|
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
@@ -1,3 +1,3 @@
1
1
  module ResqueJobsTree
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.1"
3
3
  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.0
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-15 00:00:00.000000000 Z
12
+ date: 2013-04-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler