module Jobly::JobExtensions::Solo

Public Class Methods

included(base) click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 8
def self.included(base)
  base.extend ClassMethods
end

Public Instance Methods

solo?() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 27
def solo?
  self.class.solo?
end
solo_full_key() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 39
def solo_full_key
  "jobly:solo:#{solo_key}"
end
solo_key() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 31
def solo_key
  @solo_key ||= (self.class.solo_key || solo_key!)
end
solo_key!() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 35
def solo_key!
  Digest::MD5.hexdigest "#{self.class.name}:#{params}"
end
solo_lock(expire = 1.hour) click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 49
def solo_lock(expire = 1.hour)
  Sidekiq.redis do |redis|
    redis.setex(solo_full_key, expire, "1")
  end
end
solo_locked?() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 43
def solo_locked?
  Sidekiq.redis do |redis|
    redis.keys(solo_full_key).count >= 1
  end
end
solo_unlock() click to toggle source
# File lib/jobly/job_extensions/solo.rb, line 55
def solo_unlock
  Sidekiq.redis do |redis|
    redis.del solo_full_key
  end
end