From b8220b2eed4dd55dc54cff115446b7315e364bb1 Mon Sep 17 00:00:00 2001 From: Chris Wanstrath Date: Thu, 17 Mar 2011 15:41:14 -0700 Subject: [PATCH] Call after_enqueue hook in `Resque.enqueue`. Fixes #169 --- lib/resque.rb | 4 ++++ lib/resque/job.rb | 10 ++-------- test/job_hooks_test.rb | 3 ++- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/lib/resque.rb b/lib/resque.rb index 020f85f01..337bba8fd 100644 --- a/lib/resque.rb +++ b/lib/resque.rb @@ -215,6 +215,10 @@ def watch_queue(queue) # This method is considered part of the `stable` API. def enqueue(klass, *args) Job.create(queue_from_class(klass), klass, *args) + + Plugin.after_enqueue_hooks(klass).each do |hook| + klass.send(hook, *args) + end end # This method can be used to conveniently remove a job from a queue. diff --git a/lib/resque/job.rb b/lib/resque/job.rb index 209cca34a..680b2be76 100644 --- a/lib/resque/job.rb +++ b/lib/resque/job.rb @@ -43,16 +43,10 @@ def self.create(queue, klass, *args) validate!(klass, queue) if Resque.inline? - ret = constantize(klass).perform(*decode(encode(args))) + constantize(klass).perform(*decode(encode(args))) else - ret = Resque.push(queue, :class => klass.to_s, :args => args) + Resque.push(queue, :class => klass.to_s, :args => args) end - - Plugin.after_enqueue_hooks(klass).each do |hook| - klass.send(hook, *args) - end - - ret end # Removes a job from a queue. Expects a string queue name, a diff --git a/test/job_hooks_test.rb b/test/job_hooks_test.rb index 4f0328fde..90a13a9ae 100644 --- a/test/job_hooks_test.rb +++ b/test/job_hooks_test.rb @@ -232,6 +232,7 @@ def self.on_failure_record_failure(exception, history) include PerformJob class ::AfterEnqueueJob + @queue = :jobs def self.after_enqueue_record_history(history) history << :after_enqueue end @@ -243,7 +244,7 @@ def self.perform(history) test "the after enqueue hook should run" do history = [] @worker = Resque::Worker.new(:jobs) - Resque::Job.create(:jobs, 'AfterEnqueueJob', history) + Resque.enqueue(AfterEnqueueJob, history) @worker.work(0) assert_equal history, [:after_enqueue], "after_enqueue was not run" end