Skip to content

Commit eabb89f

Browse files
rcarverdefunkt
authored andcommitted
extract hook finding to Resque::Plugin
1 parent a1f7e57 commit eabb89f

File tree

4 files changed

+64
-4
lines changed

4 files changed

+64
-4
lines changed

lib/resque.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
require 'resque/stat'
1818
require 'resque/job'
1919
require 'resque/worker'
20+
require 'resque/plugin'
2021

2122
module Resque
2223
include Helpers

lib/resque/job.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,10 @@ def perform
109109
job_args = args || []
110110
job_was_performed = false
111111

112-
before_hooks = job.methods.grep(/^before_perform/).sort
113-
around_hooks = job.methods.grep(/^around_perform/).sort
114-
after_hooks = job.methods.grep(/^after_perform/).sort
115-
failure_hooks = job.methods.grep(/^on_failure/).sort
112+
before_hooks = Plugin.before_hooks(job)
113+
around_hooks = Plugin.around_hooks(job)
114+
after_hooks = Plugin.after_hooks(job)
115+
failure_hooks = Plugin.failure_hooks(job)
116116

117117
begin
118118
# Execute before_perform hook. Abort the job gracefully if

lib/resque/plugin.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module Resque
2+
module Plugin
3+
extend self
4+
5+
def before_hooks(job)
6+
job.methods.grep(/^before_perform/).sort
7+
end
8+
9+
def around_hooks(job)
10+
job.methods.grep(/^around_perform/).sort
11+
end
12+
13+
def after_hooks(job)
14+
job.methods.grep(/^after_perform/).sort
15+
end
16+
17+
def failure_hooks(job)
18+
job.methods.grep(/^on_failure/).sort
19+
end
20+
21+
end
22+
end

test/plugin_test.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
require File.dirname(__FILE__) + '/test_helper'
2+
3+
context "Resque::Plugin finding hooks" do
4+
module SimplePlugin
5+
extend self
6+
def before_perform1; end
7+
def before_perform; end
8+
def before_perform2; end
9+
def after_perform1; end
10+
def after_perform; end
11+
def after_perform2; end
12+
def perform; end
13+
def around_perform1; end
14+
def around_perform; end
15+
def around_perform2; end
16+
def on_failure1; end
17+
def on_failure; end
18+
def on_failure2; end
19+
end
20+
21+
test "before_perform hooks are found and sorted" do
22+
assert_equal ["before_perform", "before_perform1", "before_perform2"], Resque::Plugin.before_hooks(SimplePlugin)
23+
end
24+
25+
test "after_perform hooks are found and sorted" do
26+
assert_equal ["after_perform", "after_perform1", "after_perform2"], Resque::Plugin.after_hooks(SimplePlugin)
27+
end
28+
29+
test "around_perform hooks are found and sorted" do
30+
assert_equal ["around_perform", "around_perform1", "around_perform2"], Resque::Plugin.around_hooks(SimplePlugin)
31+
end
32+
33+
test "on_failure hooks are found and sorted" do
34+
assert_equal ["on_failure", "on_failure1", "on_failure2"], Resque::Plugin.failure_hooks(SimplePlugin)
35+
end
36+
end
37+

0 commit comments

Comments
 (0)