Class: Flipflop::Strategies::LambdaStrategy

Inherits:
AbstractStrategy show all
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

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(**options)
  @lambda = (options.delete(:lambda) || ->(*) { }).freeze
  super(**options)
  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_descriptionObject



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

Returns:

  • (Boolean)

Raises:



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