Sha256: 493dc88ef0faa4fe6022e90ea91f75b52ccd310d996e67e51a920be4d05bc50b
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
module UniqueJob class JobHistory def initialize(worker_class, queueing_class, ttl) @key = "#{self.class}:#{queueing_class}:#{worker_class}" @ttl = ttl end def ttl(val = nil) if val redis.ttl(key(val)) else @ttl end end def delete_all redis.keys("#{@key}:*").each do |key| redis.del(key) end end def exists?(val) redis.exists(key(val)) end def add(val) redis.setex(key(val), @ttl, true) end private def key(val) "#{@key}:#{val}" end def redis self.class.redis end class << self def redis @redis ||= Redis.client(ENV['REDIS_HOST']) end end module RescueAllRedisErrors %i( ttl exists? add ).each do |method_name| define_method(method_name) do |*args, &blk| start = Time.zone.now super(*args, &blk) rescue => e elapsed = Time.zone.now - start Rails.logger.warn "Rescue all errors in #{self.class}##{method_name} #{e.inspect} elapsed=#{sprintf("%.3f sec", elapsed)}" Rails.logger.debug { e.backtrace.join("\n") } nil end end end prepend RescueAllRedisErrors end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
unique_job-0.1.0 | lib/unique_job/job_history.rb |