@@ -11,56 +11,68 @@ def lint(plugin)
11
11
hooks = before_hooks ( plugin ) + around_hooks ( plugin ) + after_hooks ( plugin )
12
12
13
13
hooks . each do |hook |
14
- if hook =~ / perform$/
14
+ if hook . to_s . end_with? ( " perform" )
15
15
raise LintError , "#{ plugin } .#{ hook } is not namespaced"
16
16
end
17
17
end
18
18
19
19
failure_hooks ( plugin ) . each do |hook |
20
- if hook =~ / failure$/
20
+ if hook . to_s . end_with? ( " failure" )
21
21
raise LintError , "#{ plugin } .#{ hook } is not namespaced"
22
22
end
23
23
end
24
24
end
25
25
26
+ @job_methods = { }
27
+ def job_methods ( job )
28
+ @job_methods [ job ] ||= job . methods . collect { |m | m . to_s }
29
+ end
30
+
31
+ # Given an object, and a method prefix, returns a list of methods prefixed
32
+ # with that name (hook names).
33
+ def get_hook_names ( job , hook_method_prefix )
34
+ methods = ( job . respond_to? ( :hooks ) && job . hooks . keys ) || job_methods ( job )
35
+ methods . select { |m | m . start_with? ( hook_method_prefix ) } . sort
36
+ end
37
+
26
38
# Given an object, returns a list `before_perform` hook names.
27
39
def before_hooks ( job )
28
- job . methods . grep ( /^ before_perform/ ) . sort
40
+ get_hook_names ( job , ' before_perform' )
29
41
end
30
42
31
43
# Given an object, returns a list `around_perform` hook names.
32
44
def around_hooks ( job )
33
- job . methods . grep ( /^ around_perform/ ) . sort
45
+ get_hook_names ( job , ' around_perform' )
34
46
end
35
47
36
48
# Given an object, returns a list `after_perform` hook names.
37
49
def after_hooks ( job )
38
- job . methods . grep ( /^ after_perform/ ) . sort
50
+ get_hook_names ( job , ' after_perform' )
39
51
end
40
52
41
53
# Given an object, returns a list `on_failure` hook names.
42
54
def failure_hooks ( job )
43
- job . methods . grep ( /^ on_failure/ ) . sort
55
+ get_hook_names ( job , ' on_failure' )
44
56
end
45
57
46
58
# Given an object, returns a list `after_enqueue` hook names.
47
59
def after_enqueue_hooks ( job )
48
- job . methods . grep ( /^ after_enqueue/ ) . sort
60
+ get_hook_names ( job , ' after_enqueue' )
49
61
end
50
62
51
63
# Given an object, returns a list `before_enqueue` hook names.
52
64
def before_enqueue_hooks ( job )
53
- job . methods . grep ( /^ before_enqueue/ ) . sort
65
+ get_hook_names ( job , ' before_enqueue' )
54
66
end
55
67
56
68
# Given an object, returns a list `after_dequeue` hook names.
57
69
def after_dequeue_hooks ( job )
58
- job . methods . grep ( /^ after_dequeue/ ) . sort
70
+ get_hook_names ( job , ' after_dequeue' )
59
71
end
60
72
61
73
# Given an object, returns a list `before_dequeue` hook names.
62
74
def before_dequeue_hooks ( job )
63
- job . methods . grep ( /^ before_dequeue/ ) . sort
75
+ get_hook_names ( job , ' before_dequeue' )
64
76
end
65
77
end
66
78
end
0 commit comments