class Resque::Pool::Lifeguard
Constants
- VERSION
Attributes
defaults[R]
hostname[R]
Public Class Methods
all_pools()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 18 def self.all_pools all = Resque.redis.hgetall pool_key all.map { |k, v| [k, Resque.decode(v)] }.to_h rescue Resque::Helpers::DecodeException reset! {} end
new(hostname: Socket.gethostname, defaults: -> (_env) { {})
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 9 def initialize hostname: Socket.gethostname, defaults: -> (_env) { {} } @defaults = defaults @hostname = hostname end
pool_key()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 14 def self.pool_key 'resque-pool-lifeguard' end
reset!()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 28 def self.reset! Resque.redis.del pool_key end
reset_empty!()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 32 def self.reset_empty! used_hosts = Resque.workers.map(&:hostname).uniq (all_pools.keys - used_hosts).each do |host| new(hostname: host).reset! end end
Public Instance Methods
[](queues)
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 62 def [] queues values.to_h[queues] end
[]=(queues, count)
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 66 def []= queues, count self.values = if count.zero? values.to_h.tap do |vals| vals.delete queues end else values.to_h.merge queues => count end end
call(env)
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 40 def call env @values = values || set_defaults(env) end
reset!()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 44 def reset! Resque.redis.hdel pool_key, hostname end
values()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 48 def values Resque.decode Resque.redis.hget pool_key, hostname rescue Resque::Helpers::DecodeException reset! nil rescue Redis::TimeoutError, Redis::CannotConnectError log "Could not get config from redis" @values end
values=(values)
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 58 def values= values Resque.redis.hset pool_key, hostname, (Resque.encode values) end
Private Instance Methods
pool_key()
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 78 def pool_key self.class.pool_key end
set_defaults(env)
click to toggle source
# File lib/resque/pool/lifeguard.rb, line 82 def set_defaults env self.values = defaults.(env) end