@@ -18,7 +18,7 @@ class Job
18
18
19
19
DEFAULT_QUEUE_NAME = 'default'
20
20
21
- attr_accessor :name , :cron , :description , :klass , :args , :message
21
+ attr_accessor :name , :cron , :description , :klass , :klass_const , :args
22
22
attr_reader :last_enqueue_time , :fetch_missing_args , :status
23
23
24
24
def initialize ( input_args = { } )
@@ -32,6 +32,11 @@ def initialize(input_args = {})
32
32
33
33
# get class from klass or class
34
34
@klass = args [ 'klass' ] || args [ 'class' ]
35
+ @klass_const = begin
36
+ Sidekiq ::Crond ::Support . constantize ( @klass . to_s )
37
+ rescue NameError
38
+ nil
39
+ end
35
40
36
41
# set status of job
37
42
@status = args [ 'status' ] || status_from_redis
@@ -51,42 +56,16 @@ def initialize(input_args = {})
51
56
@active_job_queue_name_prefix = args [ 'queue_name_prefix' ]
52
57
@active_job_queue_name_delimiter = args [ 'queue_name_delimiter' ]
53
58
54
- if args [ 'message' ]
55
- @message = args [ 'message' ]
56
- message_data = Sidekiq . load_json ( @message ) || { }
57
- @queue = message_data [ 'queue' ] || DEFAULT_QUEUE_NAME
58
- elsif @klass
59
- message_data = {
60
- 'class' => @klass . to_s ,
61
- 'args' => @args
62
- }
63
-
64
- # get right data for message
65
- # only if message wasn't specified before
66
- klass_data = case @klass
67
- when Class
68
- @klass . get_sidekiq_options
69
- when String
70
- begin
71
- Sidekiq ::Crond ::Support . constantize ( @klass ) . get_sidekiq_options
72
- rescue StandardError => _e
73
- # Unknown class
74
- { 'queue' => DEFAULT_QUEUE_NAME }
75
- end
76
- end
77
-
78
- message_data = klass_data . merge ( message_data )
79
- # override queue if setted in config
80
- # only if message is hash - can be string (dumped JSON)
81
- @queue = if args [ 'queue' ]
82
- message_data [ 'queue' ] = args [ 'queue' ]
83
- else
84
- message_data [ 'queue' ] || DEFAULT_QUEUE_NAME
85
- end
86
-
87
- # dump message as json
88
- @message = message_data
89
- end
59
+ klass_data = @klass . get_sidekiq_options
60
+ # override queue if setted in config
61
+ # only if message is hash - can be string (dumped JSON)
62
+ @queue = if args [ 'queue' ]
63
+ args [ 'queue' ]
64
+ elsif @active_job
65
+ klass_const . queue_name
66
+ else
67
+ klass_data [ 'queue' ] || DEFAULT_QUEUE_NAME
68
+ end
90
69
91
70
@queue_name_with_prefix = queue_name_with_prefix
92
71
end
@@ -123,31 +102,16 @@ def test_and_enque_for_time!(time)
123
102
def enque! ( time = Time . now . utc )
124
103
@last_enqueue_time = time . strftime ( LAST_ENQUEUE_TIME_FORMAT )
125
104
126
- klass_const =
127
- begin
128
- Sidekiq ::Crond ::Support . constantize ( @klass . to_s )
129
- rescue NameError
130
- nil
131
- end
132
-
133
105
jid =
134
- if klass_const
135
- if defined? ( ActiveJob ::Base ) && klass_const < ActiveJob ::Base
136
- enqueue_active_job ( klass_const ) . try :provider_job_id
137
- else
138
- enqueue_sidekiq_worker ( klass_const )
139
- end
106
+ if defined? ( ActiveJob ::Base ) && klass_const < ActiveJob ::Base
107
+ enqueue_active_job ( klass_const ) . try :provider_job_id
140
108
else
141
- if @active_job
142
- Sidekiq ::Client . push ( active_job_message )
143
- else
144
- Sidekiq ::Client . push ( sidekiq_worker_message )
145
- end
109
+ enqueue_sidekiq_worker ( klass_const )
146
110
end
147
111
148
112
save_last_enqueue_time
149
113
add_jid_history jid
150
- Sidekiq . logger . debug "enqueued #{ @name } : #{ @message } "
114
+ Sidekiq . logger . debug "enqueued #{ @name } : #{ @args } "
151
115
end
152
116
153
117
def active_job?
@@ -164,11 +128,6 @@ def enqueue_sidekiq_worker(klass_const)
164
128
klass_const . set ( queue : queue_name_with_prefix ) . perform_async ( *@args )
165
129
end
166
130
167
- # siodekiq worker message
168
- def sidekiq_worker_message
169
- @message . is_a? ( String ) ? Sidekiq . load_json ( @message ) : @message
170
- end
171
-
172
131
def queue_name_with_prefix
173
132
return @queue unless active_job?
174
133
@@ -191,23 +150,6 @@ def queue_name_with_prefix
191
150
queue_name
192
151
end
193
152
194
- # active job has different structure how it is loading data from sidekiq
195
- # queue, it createaswrapper arround job
196
- def active_job_message
197
- {
198
- 'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper' ,
199
- 'wrapped' => @klass ,
200
- 'queue' => @queue_name_with_prefix ,
201
- 'description' => @description ,
202
- 'args' => [ {
203
- 'job_class' => @klass ,
204
- 'job_id' => SecureRandom . uuid ,
205
- 'queue_name' => @queue_name_with_prefix ,
206
- 'arguments' => @args
207
- } ]
208
- }
209
- end
210
-
211
153
def disable!
212
154
@status = DISABLED_STATUS
213
155
save
@@ -226,12 +168,6 @@ def disabled?
226
168
!enabled?
227
169
end
228
170
229
- def pretty_message
230
- JSON . pretty_generate Sidekiq . load_json ( message )
231
- rescue JSON ::ParserError
232
- message
233
- end
234
-
235
171
def status_from_redis
236
172
out = ENABLED_STATUS
237
173
if fetch_missing_args
@@ -281,7 +217,6 @@ def to_hash
281
217
cron : @cron ,
282
218
description : @description ,
283
219
args : @args . is_a? ( String ) ? @args : Sidekiq . dump_json ( @args || [ ] ) ,
284
- message : @message . is_a? ( String ) ? @message : Sidekiq . dump_json ( @message || { } ) ,
285
220
status : @status ,
286
221
active_job : @active_job ,
287
222
queue_name_prefix : @active_job_queue_name_prefix ,
@@ -309,20 +244,10 @@ def valid?
309
244
end
310
245
end
311
246
312
- @errors << "'klass' (or class) must be set" unless klass_valid?
313
-
247
+ @errors << "'klass' (or class) must be set and exist" if @klass_const . nil?
314
248
errors . empty?
315
249
end
316
250
317
- def klass_valid?
318
- case @klass
319
- when Class
320
- true
321
- when String
322
- !@klass . empty?
323
- end
324
- end
325
-
326
251
# add job to cron jobs
327
252
# input:
328
253
# name: (string) - name of job
0 commit comments