Class: Sidekiq::Antidote::Repository
- Inherits:
-
Object
- Object
- Sidekiq::Antidote::Repository
- Includes:
- Enumerable
- Defined in:
- lib/sidekiq/antidote/repository.rb
Overview
Inhibitors repository
Constant Summary collapse
- REDIS_KEY =
"sidekiq-antidote"
Instance Method Summary collapse
Instance Method Details
#add(treatment:, class_qualifier:) ⇒ Inhibitor
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sidekiq/antidote/repository.rb', line 40 def add(treatment:, class_qualifier:) 3.times do inhibitor = Sidekiq::Antidote::Inhibitor.new( id: SecureRandom.hex(8), treatment: treatment, class_qualifier: class_qualifier ) return inhibitor if redis("HSETNX", REDIS_KEY, *serialize(inhibitor)).to_i.positive? end raise "can't generate available ID" end |
#delete(*ids) ⇒ nil
56 57 58 59 |
# File 'lib/sidekiq/antidote/repository.rb', line 56 def delete(*ids) redis("HDEL", REDIS_KEY, *ids) unless ids.empty? nil end |
#each ⇒ Enumerator<Inhibitor> #each {|inhibitor| ... } ⇒ self
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/sidekiq/antidote/repository.rb', line 20 def each return to_enum __method__ unless block_given? broken_ids = [] redis("HGETALL", REDIS_KEY).each do |id, payload| inhibitor = deserialize(id, payload) next yield inhibitor if inhibitor broken_ids << id end delete(*broken_ids) self end |