Class: Flipflop::Strategies::LambdaStrategy
- Inherits:
-
AbstractStrategy
- Object
- AbstractStrategy
- Flipflop::Strategies::LambdaStrategy
- Defined in:
- lib/flipflop/strategies/lambda_strategy.rb
Instance Attribute Summary
Attributes inherited from AbstractStrategy
#description, #key, #name, #title
Class Method Summary collapse
Instance Method Summary collapse
- #enabled?(feature) ⇒ Boolean
-
#initialize(**options) ⇒ LambdaStrategy
constructor
A new instance of LambdaStrategy.
Methods inherited from AbstractStrategy
#clear!, default_name, #hidden?, #reset!, #switch!, #switchable?
Constructor Details
#initialize(**options) ⇒ LambdaStrategy
Returns a new instance of LambdaStrategy.
10 11 12 13 14 15 16 |
# File 'lib/flipflop/strategies/lambda_strategy.rb', line 10 def initialize(**) @lambda = (.delete(:lambda) || ->(*) { }).freeze super(**) if @lambda.arity.abs != 1 raise StrategyError.new(name, "has lambda with arity #{@lambda.arity}, expected 1 or -1") end end |
Class Method Details
.default_description ⇒ Object
5 6 7 |
# File 'lib/flipflop/strategies/lambda_strategy.rb', line 5 def default_description "Resolves feature settings with custom code." end |
Instance Method Details
#enabled?(feature) ⇒ Boolean
18 19 20 21 22 |
# File 'lib/flipflop/strategies/lambda_strategy.rb', line 18 def enabled?(feature) result = instance_exec(feature, &@lambda) return result if result.nil? or result == !!result raise StrategyError.new(name, "returned invalid result #{result.inspect} for feature '#{feature}'") end |