Sha256: e3201c6db1251e464c7cb6acd7aa8752c90111ae8fc30d5ed48da6b2cd8eb5c3
Contents?: true
Size: 1.22 KB
Versions: 9
Compression:
Stored size: 1.22 KB
Contents
module SidekiqUniqueJobs class PayloadHelper def self.config SidekiqUniqueJobs.config end def self.get_payload(klass, queue, *args) unique_on_all_queues = false if config.unique_args_enabled worker_class = klass.constantize args = yield_unique_args(worker_class, *args) unique_on_all_queues = worker_class.get_sidekiq_options['unique_on_all_queues'] end md5_arguments = { class: klass, args: args } md5_arguments[:queue] = queue unless unique_on_all_queues "#{config.unique_prefix}:" \ "#{Digest::MD5.hexdigest(Sidekiq.dump_json(md5_arguments))}" end def self.yield_unique_args(worker_class, args) unique_args = worker_class.get_sidekiq_options['unique_args'] filtered_args(worker_class, unique_args, args) rescue NameError # fallback to not filtering args when class can't be instantiated args end def self.filtered_args(worker_class, unique_args, args) case unique_args when Proc unique_args.call(args) when Symbol if worker_class.respond_to?(unique_args) worker_class.send(unique_args, *args) end else args end end end end
Version data entries
9 entries across 9 versions & 1 rubygems