Sha256: 937e154704e8064c84bf4e416357d1065fd18188d77a4dfd21d3be12da3e1e6f
Contents?: true
Size: 762 Bytes
Versions: 12
Compression:
Stored size: 762 Bytes
Contents
module Flipflop module Strategies class LambdaStrategy < AbstractStrategy class << self def default_description "Resolves feature settings with custom code." end end 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 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 end end end
Version data entries
12 entries across 12 versions & 1 rubygems