def initialize input_args = {}
args = Hash[input_args.map{ |k, v| [k.to_s, v] }]
@fetch_missing_args = args.delete('fetch_missing_args')
@fetch_missing_args = true if @fetch_missing_args.nil?
@name = args["name"]
@cron = args["cron"]
@description = args["description"] if args["description"]
@klass = args["klass"] || args["class"]
@status = args['status'] || status_from_redis
if args['last_enqueue_time'] && !args['last_enqueue_time'].empty?
@last_enqueue_time = parse_enqueue_time(args['last_enqueue_time'])
else
@last_enqueue_time = last_enqueue_time_from_redis
end
@args = args["args"].nil? ? [] : parse_args( args["args"] )
@args += [Time.now.to_f] if args["date_as_argument"]
@active_job = args["active_job"] == true || ("#{args["active_job"]}" =~ (/^(true|t|yes|y|1)$/i)) == 0 || false
@active_job_queue_name_prefix = args["queue_name_prefix"]
@active_job_queue_name_delimiter = args["queue_name_delimiter"]
if args["message"]
@message = args["message"]
message_data = Sidekiq.load_json(@message) || {}
@queue = message_data['queue'] || "default"
elsif @klass
message_data = {
"class" => @klass.to_s,
"args" => @args,
}
klass_data = case @klass
when Class
@klass.get_sidekiq_options
when String
begin
Sidekiq::Cron::Support.constantize(@klass).get_sidekiq_options
rescue Exception => e
{"queue"=>"default"}
end
end
message_data = klass_data.merge(message_data)
if args['queue']
@queue = message_data['queue'] = args['queue']
else
@queue = message_data['queue'] || "default"
end
@message = message_data
end
@queue_name_with_prefix = queue_name_with_prefix
end