class Featureflow::Evaluate
Public Class Methods
new(feature_key:, feature:, failover_variant:, user:, salt:, events_client: nil)
click to toggle source
# File lib/featureflow/evaluate.rb, line 5 def initialize(feature_key:, feature:, failover_variant:, user:, salt:, events_client: nil) @key = feature_key @feature = feature @failover_variant = failover_variant @user = user @salt = salt @events_client = events_client @has_failover = @failover_variant.is_a?(String) @failover_variant = 'off' unless @has_failover @evaluated_variant = evaluate_variant end
Public Instance Methods
is?(value)
click to toggle source
# File lib/featureflow/evaluate.rb, line 19 def is?(value) @events_client.evaluate(@key, @evaluated_variant, value, @user) if @events_client @evaluated_variant == value end
off?()
click to toggle source
# File lib/featureflow/evaluate.rb, line 29 def off? is? 'off' end
Also aliased as: is_off?
on?()
click to toggle source
# File lib/featureflow/evaluate.rb, line 24 def on? is? 'on' end
Also aliased as: is_on?
value()
click to toggle source
# File lib/featureflow/evaluate.rb, line 34 def value @evaluated_variant end
Private Instance Methods
evaluate_variant()
click to toggle source
# File lib/featureflow/evaluate.rb, line 40 def evaluate_variant unless @feature Featureflow.logger.info "Evaluating nil feature '#{@feature_key}' using the "\ "#{@has_failover ? 'provided' : 'default'} failover '#{@failover_variant}'" return @failover_variant end return @feature['offVariantKey'] unless @feature['enabled'] @feature['rules'].each do |rule| next unless EvaluateHelpers.rule_matches(rule, @user) hash = EvaluateHelpers.calculate_hash(@salt, @feature['key'], @user['id']) variant_value = EvaluateHelpers.get_variant_value(hash) return EvaluateHelpers.get_variant_split_key(rule['variantSplits'], variant_value) end end