module Resque::Plugin
def after_dequeue_hooks(job)
def after_dequeue_hooks(job) get_hook_names(job, 'after_dequeue') end
def after_enqueue_hooks(job)
def after_enqueue_hooks(job) get_hook_names(job, 'after_enqueue') end
def after_hooks(job)
def after_hooks(job) get_hook_names(job, 'after_perform') end
def around_hooks(job)
def around_hooks(job) get_hook_names(job, 'around_perform') end
def before_dequeue_hooks(job)
def before_dequeue_hooks(job) get_hook_names(job, 'before_dequeue') end
def before_enqueue_hooks(job)
def before_enqueue_hooks(job) get_hook_names(job, 'before_enqueue') end
def before_hooks(job)
def before_hooks(job) get_hook_names(job, 'before_perform') end
def failure_hooks(job)
def failure_hooks(job) get_hook_names(job, 'on_failure') end
def get_hook_names(job, hook_method_prefix)
Given an object, and a method prefix, returns a list of methods prefixed
def get_hook_names(job, hook_method_prefix) methods = (job.respond_to?(:hooks) && job.hooks) || job_methods(job) methods.select{|m| m.start_with?(hook_method_prefix)}.sort end
def job_methods(job)
def job_methods(job) @job_methods[job] ||= job.methods.collect{|m| m.to_s} end
def lint(plugin)
Ensure that your plugin conforms to good hook naming conventions.
def lint(plugin) hooks = before_hooks(plugin) + around_hooks(plugin) + after_hooks(plugin) hooks.each do |hook| if hook.to_s.end_with?("perform") raise LintError, "#{plugin}.#{hook} is not namespaced" end end failure_hooks(plugin).each do |hook| if hook.to_s.end_with?("failure") raise LintError, "#{plugin}.#{hook} is not namespaced" end end end