README.md in flipper-redis-0.3.0 vs README.md in flipper-redis-0.5.0

- old
+ new

@@ -1,8 +1,8 @@ # Flipper Redis -A redis adapter for [Flipper](https://github.com/jnunemaker/flipper), the feature flipping gems. +A [Redis](https://github.com/redis/redis-rb) adapter for [Flipper](https://github.com/jnunemaker/flipper). ## Installation Add this line to your application's Gemfile: @@ -22,9 +22,75 @@ require 'flipper/adapters/redis' client = Redis.new adapter = Flipper::Adapters::Redis.new(client) flipper = Flipper.new(adapter) # profit... +``` + +## Internals + +Each feature is stored in a redis hash, which means getting a feature is single query. + +```ruby +require 'flipper/adapters/redis' +require 'redis/namespace' + +client = Redis.new +namespaced_client = Redis::Namespace.new(:flipper, :redis => client) +adapter = Flipper::Adapters::Redis.new(namespaced_client) +flipper = Flipper.new(adapter) + +# Register a few groups. +Flipper.register(:admins) { |thing| thing.admin? } +Flipper.register(:early_access) { |thing| thing.early_access? } + +# Create a user class that has flipper_id instance method. +User = Struct.new(:flipper_id) + +flipper[:stats].enable +flipper[:stats].enable flipper.group(:admins) +flipper[:stats].enable flipper.group(:early_access) +flipper[:stats].enable User.new('25') +flipper[:stats].enable User.new('90') +flipper[:stats].enable User.new('180') +flipper[:stats].enable flipper.random(15) +flipper[:stats].enable flipper.actors(45) + +flipper[:search].enable + +print 'all keys: ' +pp namespaced_client.keys +# all keys: ["stats", "flipper_features", "search"] + +print "known flipper features: " +pp namespaced_client.smembers("flipper_features") +# known flipper features: ["stats", "search"] + +puts 'stats keys' +pp namespaced_client.hgetall('stats') +# stats keys +# {"boolean"=>"true", +# "groups/admins"=>"1", +# "actors/25"=>"1", +# "percentage_of_random"=>"15", +# "percentage_of_actors"=>"45", +# "groups/early_access"=>"1", +# "actors/90"=>"1", +# "actors/180"=>"1"} + +puts 'search keys' +pp namespaced_client.hgetall('search') +# search keys +# {"boolean"=>"true"} + +puts 'flipper get of feature' +pp adapter.get(flipper[:stats]) +# flipper get of feature +# {:boolean=>"true", +# :groups=>#<Set: {"admins", "early_access"}>, +# :actors=>#<Set: {"25", "90", "180"}>, +# :percentage_of_actors=>"45", +# :percentage_of_random=>"15"} ``` ## Contributing 1. Fork it