Sha256: 18004062f2cc141019771acb95b0f06e1ad27ba67a18603bc797e9ad1cb095a8

Contents?: true

Size: 885 Bytes

Versions: 9

Compression:

Stored size: 885 Bytes

Contents

module Flipflop
  module Strategies
    class RedisStrategy < AbstractStrategy
      class << self
        def default_description
          "Stores features in Redis. Applies to all users."
        end
      end

      def initialize(**options)
        @client = options.delete(:client) || ::Redis.new
        @prefix = options.delete(:prefix).to_s.freeze
        super(**options)
      end

      def switchable?
        true
      end

      def enabled?(feature)
        redis_value = @client.get(redis_key(feature))
        return if redis_value.nil?
        redis_value === "1"
      end

      def switch!(feature, enabled)
        @client.set(redis_key(feature), enabled ? "1" : "0")
      end

      def clear!(feature)
        @client.del(redis_key(feature))
      end

      protected

      def redis_key(feature)
        @prefix + feature.to_s
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
flipflop-2.8.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.7.1 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.7.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.6.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.5.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.4.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.3.1 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.3.0 lib/flipflop/strategies/redis_strategy.rb
flipflop-2.2.1 lib/flipflop/strategies/redis_strategy.rb