Skip to content

Commit 3a48ade

Browse files
bogdandefunkt
authored andcommitted
Resque.validate!(klass) method implementation
Method used to determine is the given klass could be a valid Resque job
1 parent a8f8fe5 commit 3a48ade

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

lib/resque.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,15 @@ def reserve(queue)
253253
Job.reserve(queue)
254254
end
255255

256+
# Validates if the given klass could be a valid Resque job
257+
#
258+
# If no queue can be inferred this method will raise a `Resque::NoQueueError`
259+
#
260+
# If given klass is nil this method will raise a `Resque::NoClassError`
261+
def validate!(klass)
262+
Job.validate!(klass)
263+
end
264+
256265

257266
#
258267
# worker shortcuts

lib/resque/job.rb

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,7 @@ def initialize(queue, payload)
4040
#
4141
# Raises an exception if no queue or class is given.
4242
def self.create(queue, klass, *args)
43-
if !queue
44-
raise NoQueueError.new("Jobs must be placed onto a queue.")
45-
end
46-
47-
if klass.to_s.empty?
48-
raise NoClassError.new("Jobs must be given a class.")
49-
end
43+
validate!(klass, queue)
5044

5145
ret = Resque.push(queue, :class => klass.to_s, :args => args)
5246
Plugin.after_enqueue_hooks(klass).each do |hook|
@@ -104,6 +98,18 @@ def self.reserve(queue)
10498
new(queue, payload)
10599
end
106100

101+
102+
# Validates if the given klass could be a valid Resque job
103+
def self.validate!(klass, queue = Resque.queue_from_class(klass))
104+
if !queue
105+
raise NoQueueError.new("Jobs must be placed onto a queue.")
106+
end
107+
108+
if klass.to_s.empty?
109+
raise NoClassError.new("Jobs must be given a class.")
110+
end
111+
end
112+
107113
# Attempts to perform the work represented by this job instance.
108114
# Calls #perform on the class given in the payload with the
109115
# arguments given in the payload.

test/resque_test.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@
128128
end
129129
end
130130

131+
test "validates job for queue presence" do
132+
assert_raises Resque::NoQueueError do
133+
Resque.validate!(SomeJob)
134+
end
135+
end
136+
131137
test "can put items on a queue" do
132138
assert Resque.push(:people, { 'name' => 'jon' })
133139
end
@@ -229,4 +235,4 @@
229235
test "decode bad json" do
230236
assert_nil Resque.decode("{\"error\":\"Module not found \\u002\"}")
231237
end
232-
end
238+
end

0 commit comments

Comments
 (0)