krasnoukhov/sidekiq-middleware

View on GitHub
lib/sidekiq-middleware/helpers.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Sidekiq
  module Middleware
    module Helpers
      extend self

      UNIQUE_EXPIRATION = 30 * 60 # 30 minutes

      def unique_digest(klass, item)
        if klass.respond_to?(:lock)
          args = item['args']
          klass.lock(*args)
        else
          dumped = Sidekiq.dump_json(item.slice('class', 'queue', 'args'))
          digest = Digest::MD5.hexdigest(dumped)

          "locks:unique:#{digest}"
        end
      end

      def unique_expiration(klass)
        klass.get_sidekiq_options['expiration'] || UNIQUE_EXPIRATION
      end

      def unique_enabled?(klass, item)
        enabled = klass.get_sidekiq_options['unique']
        if item.has_key?('at') && enabled != :all
          enabled = false
        end
        enabled
      end

      def unique_manual?(klass)
        klass.get_sidekiq_options['manual']
      end
    end
  end
end