Sha256: aa572985d92d30a197ddef414e345512c29319905c258208d93534daccf717b2

Contents?: true

Size: 900 Bytes

Versions: 11

Compression:

Stored size: 900 Bytes

Contents

module Flipflop
  module Strategies
    class SessionStrategy < AbstractStrategy
      class << self
        def default_description
          "Stores features in the user session. Applies to current user."
        end
      end

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

      def switchable?
        request?
      end

      def enabled?(feature)
        return unless request?
        return unless request.session.has_key?(variable_key(feature))
        request.session[variable_key(feature)] == true
      end

      def switch!(feature, enabled)
        request.session[variable_key(feature)] = enabled
      end

      def clear!(feature)
        request.session.delete(variable_key(feature))
      end

      protected

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

Version data entries

11 entries across 11 versions & 1 rubygems

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