Sha256: 65e06382fb213d9a321a5e5e18467ded479048b37ea7d68854f9bb6fcd1a52cd
Contents?: true
Size: 1.15 KB
Versions: 1
Compression:
Stored size: 1.15 KB
Contents
# vim:fileencoding=utf-8 module Resque module Scheduler module Lock class Base attr_reader :key attr_accessor :timeout def initialize(key, options = {}) @key = key # 3 minute default timeout @timeout = options[:timeout] || 60 * 3 end # Attempts to acquire the lock. Returns true if successfully acquired. def acquire! fail NotImplementedError end def value @value ||= [hostname, process_id].join(':') end # Returns true if you currently hold the lock. def locked? fail NotImplementedError end # Releases the lock. def release! Resque.redis.del(key) == 1 end private # Extends the lock by `timeout` seconds. def extend_lock! Resque.redis.expire(key, timeout) end def hostname local_hostname = Socket.gethostname Socket.gethostbyname(local_hostname).first rescue local_hostname end def process_id Process.pid end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
resque-scheduler-3.0.0 | lib/resque/scheduler/lock/base.rb |