@@ -11,56 +11,68 @@ def lint(plugin)
1111 hooks = before_hooks ( plugin ) + around_hooks ( plugin ) + after_hooks ( plugin )
1212
1313 hooks . each do |hook |
14- if hook =~ / perform$/
14+ if hook . to_s . end_with? ( " perform" )
1515 raise LintError , "#{ plugin } .#{ hook } is not namespaced"
1616 end
1717 end
1818
1919 failure_hooks ( plugin ) . each do |hook |
20- if hook =~ / failure$/
20+ if hook . to_s . end_with? ( " failure" )
2121 raise LintError , "#{ plugin } .#{ hook } is not namespaced"
2222 end
2323 end
2424 end
2525
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+
2638 # Given an object, returns a list `before_perform` hook names.
2739 def before_hooks ( job )
28- job . methods . grep ( /^ before_perform/ ) . sort
40+ get_hook_names ( job , ' before_perform' )
2941 end
3042
3143 # Given an object, returns a list `around_perform` hook names.
3244 def around_hooks ( job )
33- job . methods . grep ( /^ around_perform/ ) . sort
45+ get_hook_names ( job , ' around_perform' )
3446 end
3547
3648 # Given an object, returns a list `after_perform` hook names.
3749 def after_hooks ( job )
38- job . methods . grep ( /^ after_perform/ ) . sort
50+ get_hook_names ( job , ' after_perform' )
3951 end
4052
4153 # Given an object, returns a list `on_failure` hook names.
4254 def failure_hooks ( job )
43- job . methods . grep ( /^ on_failure/ ) . sort
55+ get_hook_names ( job , ' on_failure' )
4456 end
4557
4658 # Given an object, returns a list `after_enqueue` hook names.
4759 def after_enqueue_hooks ( job )
48- job . methods . grep ( /^ after_enqueue/ ) . sort
60+ get_hook_names ( job , ' after_enqueue' )
4961 end
5062
5163 # Given an object, returns a list `before_enqueue` hook names.
5264 def before_enqueue_hooks ( job )
53- job . methods . grep ( /^ before_enqueue/ ) . sort
65+ get_hook_names ( job , ' before_enqueue' )
5466 end
5567
5668 # Given an object, returns a list `after_dequeue` hook names.
5769 def after_dequeue_hooks ( job )
58- job . methods . grep ( /^ after_dequeue/ ) . sort
70+ get_hook_names ( job , ' after_dequeue' )
5971 end
6072
6173 # Given an object, returns a list `before_dequeue` hook names.
6274 def before_dequeue_hooks ( job )
63- job . methods . grep ( /^ before_dequeue/ ) . sort
75+ get_hook_names ( job , ' before_dequeue' )
6476 end
6577 end
6678end
0 commit comments