Class: RailsFlags::Adapters::RedisAdapter
- Defined in:
- lib/rails_flags/adapters/redis_adapter.rb
Constant Summary collapse
- REDIS_KEY_PREFIX =
'rails_flags:'.freeze
Instance Method Summary collapse
- #all ⇒ Object
- #clear ⇒ Object
- #delete(flag) ⇒ Object
-
#initialize(redis: nil, **redis_config) ⇒ RedisAdapter
constructor
A new instance of RedisAdapter.
- #read(flag) ⇒ Object
- #write(flag, value) ⇒ Object
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
#all ⇒ Object
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 |
#clear ⇒ Object
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 |