resque_jobs_tree 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -38,6 +38,7 @@ class ResqueJobsTree::Node
38
38
 
39
39
  def on_failure
40
40
  if definition.options[:continue_on_failure]
41
+ run_callback :on_failure
41
42
  after_perform
42
43
  else
43
44
  root.tree.on_failure
@@ -92,7 +93,7 @@ class ResqueJobsTree::Node
92
93
  callback_block = definition.send callback
93
94
  callback_block.call(*resources) if callback_block.kind_of? Proc
94
95
  rescue
95
- if callback == :after_perform
96
+ if [:after_perform, :on_failure].include? callback
96
97
  puts "[ResqueJobsTree::Tree] after_perform callback of node #{definition.tree.name}##{name} has failed."\
97
98
  " Continuing for cleanup."
98
99
  else
@@ -1,3 +1,3 @@
1
1
  module ResqueJobsTree
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
@@ -100,6 +100,34 @@ class ProcessTest < MiniTest::Unit::TestCase
100
100
  assert_redis_empty
101
101
  end
102
102
 
103
+ def test_launch_continue_on_failure_with_on_failure_block
104
+ Resque.inline = false
105
+ tree_definition = ResqueJobsTree::Factory.create :tree1 do
106
+ root :job1 do
107
+ perform do
108
+ Resque.redis.rpush 'history', 'tree1 job1 perform'
109
+ end
110
+ childs { [:job2] }
111
+ node :job2, continue_on_failure: true do
112
+ perform do
113
+ Resque.redis.rpush 'history', 'tree1 job2 perform'
114
+ raise 'an expected failure'
115
+ end
116
+ on_failure do
117
+ Resque.redis.rpush 'history', 'tree1 job2 on_failure'
118
+ end
119
+ end
120
+ end
121
+ end
122
+ tree_definition.spawn([1, 2, 3]).launch
123
+ assert_raises RuntimeError, 'an expected failure' do
124
+ run_resque_workers tree_definition.name
125
+ end
126
+ run_resque_workers tree_definition.name
127
+ assert_equal ['tree1 job2 perform','tree1 job2 on_failure', 'tree1 job1 perform'], redis.lrange('history', 0, -1)
128
+ redis.del 'history'
129
+ end
130
+
103
131
  def test_root_failure
104
132
  Resque.inline = false
105
133
  tree_definition = ResqueJobsTree::Factory.create :tree1 do
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.5.2
4
+ version: 0.5.3
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-05-02 00:00:00.000000000 Z
12
+ date: 2013-05-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler