File tree Expand file tree Collapse file tree 3 files changed +29
-8
lines changed
Expand file tree Collapse file tree 3 files changed +29
-8
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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.
Original file line number Diff line number Diff line change 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
229235 test "decode bad json" do
230236 assert_nil Resque . decode ( "{\" error\" :\" Module not found \\ u002\" }" )
231237 end
232- end
238+ end
You can’t perform that action at this time.
0 commit comments