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

Version Path
sidekiq-unique-jobs-3.0.14 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.13 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.12 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.11 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.10 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.9 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.8 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.7 lib/sidekiq_unique_jobs/payload_helper.rb
sidekiq-unique-jobs-3.0.5 lib/sidekiq_unique_jobs/payload_helper.rb