class Flipflop::Strategies::CookieStrategy

Public Class Methods

default_description() click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 5
def default_description
  "Stores features in a browser cookie. Applies to current user."
end
new(**options) click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 10
def initialize(**options)
  # TODO: Support :expires as a runtime-evaluated option?
  @options = options.extract!(:path, :domain, :secure, :httponly).freeze
  @prefix = options.delete(:prefix).to_s.freeze
  super(**options)
end

Public Instance Methods

clear!(feature) click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 34
def clear!(feature)
  request.cookie_jar.delete(cookie_key(feature), **@options)
end
enabled?(feature) click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 21
def enabled?(feature)
  return unless request?
  return unless request.cookie_jar.has_key?(cookie_key(feature))
  cookie = request.cookie_jar[cookie_key(feature)]
  cookie_value = cookie.is_a?(Hash) ? cookie["value"] : cookie
  cookie_value === "1"
end
switch!(feature, enabled) click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 29
def switch!(feature, enabled)
  value = @options.merge(value: enabled ? "1" : "0")
  request.cookie_jar[cookie_key(feature)] = value
end
switchable?() click to toggle source
# File lib/flipflop/strategies/cookie_strategy.rb, line 17
def switchable?
  request?
end

Protected Instance Methods