class Flipflop::Strategies::AbstractStrategy
Attributes
description[R]
key[R]
name[R]
title[R]
Public Class Methods
default_description()
click to toggle source
# File lib/flipflop/strategies/abstract_strategy.rb, line 34 def default_description end
default_name()
click to toggle source
# File lib/flipflop/strategies/abstract_strategy.rb, line 29 def default_name return "anonymous" unless name name.split("::").last.gsub(/Strategy$/, "").underscore end
new(**options)
click to toggle source
# File lib/flipflop/strategies/abstract_strategy.rb, line 40 def initialize(**options) # Generate key before setting instance that should be excluded from # unique key generation. @key = OptionsHasher.new(self).generate @name = (options.delete(:name) || self.class.default_name).freeze @title = @name.humanize.freeze @description = (options.delete(:description) || self.class.default_description).freeze @hidden = !!options.delete(:hidden) || false if options.any? raise StrategyError.new(name, "did not understand option #{options.keys.map(&:inspect) * ', '}") end end
Public Instance Methods
clear!(feature)
click to toggle source
Remove the feature symbol from this strategy. It should no longer be recognized afterwards: enabled?(feature) will return nil.
# File lib/flipflop/strategies/abstract_strategy.rb, line 79 def clear!(feature) raise NotImplementedError end
enabled?(feature)
click to toggle source
Return true iff the given feature symbol is explicitly enabled. Return false iff the given feature symbol is explicitly disabled. Return nil iff the given feature symbol is unknown by this strategy.
# File lib/flipflop/strategies/abstract_strategy.rb, line 68 def enabled?(feature) raise NotImplementedError end
reset!()
click to toggle source
Optional. Remove all features, so that no feature is known.
# File lib/flipflop/strategies/abstract_strategy.rb, line 84 def reset! raise NotImplementedError end
switch!(feature, enabled)
click to toggle source
Enable/disable (true/false) the given feature symbol explicitly.
# File lib/flipflop/strategies/abstract_strategy.rb, line 73 def switch!(feature, enabled) raise NotImplementedError end
switchable?()
click to toggle source
Return true iff this strategy is able to switch features on/off. Return false otherwise.
# File lib/flipflop/strategies/abstract_strategy.rb, line 61 def switchable? false end
Protected Instance Methods
request()
click to toggle source
Returns the request. Raises if no request is available, for example if the strategy was used outside of a request context.
# File lib/flipflop/strategies/abstract_strategy.rb, line 92 def request RequestInterceptor.request or raise StrategyError.new(name, "required request, but was used outside request context") end
request?()
click to toggle source
Returns true iff a request is available.
# File lib/flipflop/strategies/abstract_strategy.rb, line 98 def request? !RequestInterceptor.request.nil? end