Skip to content

Commit 0f97f33

Browse files
committed
validate job before putting it on a queue.
This fixes resque#479
1 parent b92ae76 commit 0f97f33

File tree

3 files changed

+13
-0
lines changed

3 files changed

+13
-0
lines changed

lib/resque.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ def enqueue(klass, *args)
274274
#
275275
# This method is considered part of the `stable` API.
276276
def enqueue_to(queue, klass, *args)
277+
validate(klass, queue)
277278
# Perform before_enqueue hooks. Don't perform enqueue if any hook returns false
278279
before_hooks = Plugin.before_enqueue_hooks(klass).collect do |hook|
279280
klass.send(hook, *args)

test/test_helper.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ def save
113113
end
114114
end
115115

116+
class JobWithNoQueue
117+
def self.perform
118+
"I don't have a queue."
119+
end
120+
end
121+
116122
def with_failure_backend(failure_backend, &block)
117123
previous_backend = Resque::Failure.backend
118124
Resque::Failure.backend = failure_backend

test/worker_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@
3434
assert_match('uninitialized constant', Resque::Failure.all['error'])
3535
end
3636

37+
it "validates jobs before enquing them." do
38+
assert_raises Resque::NoQueueError do
39+
Resque.enqueue(JobWithNoQueue)
40+
end
41+
end
42+
3743
it "does not allow exceptions from failure backend to escape" do
3844
job = Resque::Job.new(:jobs, {})
3945
with_failure_backend BadFailureBackend do

0 commit comments

Comments
 (0)