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)
253
253
Job . reserve ( queue )
254
254
end
255
255
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
+
256
265
257
266
#
258
267
# worker shortcuts
Original file line number Diff line number Diff line change @@ -40,13 +40,7 @@ def initialize(queue, payload)
40
40
#
41
41
# Raises an exception if no queue or class is given.
42
42
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 )
50
44
51
45
ret = Resque . push ( queue , :class => klass . to_s , :args => args )
52
46
Plugin . after_enqueue_hooks ( klass ) . each do |hook |
@@ -104,6 +98,18 @@ def self.reserve(queue)
104
98
new ( queue , payload )
105
99
end
106
100
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
+
107
113
# Attempts to perform the work represented by this job instance.
108
114
# Calls #perform on the class given in the payload with the
109
115
# arguments given in the payload.
Original file line number Diff line number Diff line change 128
128
end
129
129
end
130
130
131
+ test "validates job for queue presence" do
132
+ assert_raises Resque ::NoQueueError do
133
+ Resque . validate! ( SomeJob )
134
+ end
135
+ end
136
+
131
137
test "can put items on a queue" do
132
138
assert Resque . push ( :people , { 'name' => 'jon' } )
133
139
end
229
235
test "decode bad json" do
230
236
assert_nil Resque . decode ( "{\" error\" :\" Module not found \\ u002\" }" )
231
237
end
232
- end
238
+ end
You can’t perform that action at this time.
0 commit comments