Skip to content

Commit 1f7411d

Browse files
committed
Make Resque.enqueue return something deterministic
Currently Resque.enqueue returns an empty [] or the results of the after_enqueue_hooks that may have been run. If the before_enqueue_hook rejected the operation we get back a nil. This commit simply changes enqueue to return nil on rejection and true if the job is actually queued.
1 parent 192d347 commit 1f7411d

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

lib/resque.rb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,13 +228,15 @@ def enqueue(klass, *args)
228228
before_hooks = Plugin.before_enqueue_hooks(klass).collect do |hook|
229229
klass.send(hook, *args)
230230
end
231-
return if before_hooks.any? { |result| result == false }
231+
return nil if before_hooks.any? { |result| result == false }
232232

233-
Job.create(queue_from_class(klass), klass, *args)
233+
job = Job.create(queue_from_class(klass), klass, *args)
234234

235235
Plugin.after_enqueue_hooks(klass).each do |hook|
236236
klass.send(hook, *args)
237237
end
238+
239+
return true
238240
end
239241

240242
# This method can be used to conveniently remove a job from a queue.

test/job_hooks_test.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,15 +277,15 @@ def self.perform(history)
277277
test "the before enqueue hook should run" do
278278
history = []
279279
@worker = Resque::Worker.new(:jobs)
280-
Resque.enqueue(BeforeEnqueueJob, history)
280+
assert Resque.enqueue(BeforeEnqueueJob, history)
281281
@worker.work(0)
282282
assert_equal history, [:before_enqueue], "before_enqueue was not run"
283283
end
284284

285285
test "a before enqueue hook that returns false should prevent the job from getting queued" do
286286
history = []
287287
@worker = Resque::Worker.new(:jobs)
288-
Resque.enqueue(BeforeEnqueueJobAbort, history)
288+
assert_nil Resque.enqueue(BeforeEnqueueJobAbort, history)
289289
assert_equal 0, Resque.size(:jobs)
290290
end
291291
end

0 commit comments

Comments
 (0)