Class: RailsFlags::Adapters::RedisAdapter

Inherits:
Base
  • Object
show all
Defined in:
lib/rails_flags/adapters/redis_adapter.rb

Constant Summary collapse

REDIS_KEY_PREFIX =
'rails_flags:'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(redis: nil, **redis_config) ⇒ RedisAdapter

Returns a new instance of RedisAdapter.



10
11
12
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 10

def initialize(redis: nil, **redis_config)
  @redis = redis || Redis.new(redis_config)
end

Instance Method Details

#allObject



29
30
31
32
33
34
35
36
37
38
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 29

def all
  keys = @redis.keys("#{REDIS_KEY_PREFIX}*")
  return {} if keys.empty?

  values = @redis.mget(keys)
  keys.zip(values).each_with_object({}) do |(key, value), hash|
    flag_name = key.sub(REDIS_KEY_PREFIX, '').to_sym
    hash[flag_name] = JSON.parse(value, symbolize_names: true) if value
  end
end

#clearObject



40
41
42
43
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 40

def clear
  keys = @redis.keys("#{REDIS_KEY_PREFIX}*")
  @redis.del(keys) unless keys.empty?
end

#delete(flag) ⇒ Object



25
26
27
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 25

def delete(flag)
  @redis.del(key_for(flag))
end

#read(flag) ⇒ Object



14
15
16
17
18
19
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 14

def read(flag)
  data = @redis.get(key_for(flag))
  return nil unless data

  JSON.parse(data, symbolize_names: true)
end

#write(flag, value) ⇒ Object



21
22
23
# File 'lib/rails_flags/adapters/redis_adapter.rb', line 21

def write(flag, value)
  @redis.set(key_for(flag), value.to_json)
end