Class: Hackle::OverrideExperimentFlowEvaluator

Inherits:
Object
  • Object
show all
Includes:
ExperimentFlowEvaluator
Defined in:
lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb

Instance Method Summary collapse

Constructor Details

#initialize(override_resolver:) ⇒ OverrideExperimentFlowEvaluator

Returns a new instance of OverrideExperimentFlowEvaluator.

Parameters:



33
34
35
36
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 33

def initialize(override_resolver:)
  # @type [ExperimentOverrideResolver]
  @override_resolver = override_resolver
end

Instance Method Details

#evaluate(request, context, next_flow) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 38

def evaluate(request, context, next_flow)
  overridden_variation = @override_resolver.resolve_or_nil(request, context)
  return next_flow.evaluate(request, context) if overridden_variation.nil?

  case request.experiment.type
  when ExperimentType::AB_TEST
    ExperimentEvaluation.create(request, context, overridden_variation, DecisionReason::OVERRIDDEN)
  when ExperimentType::FEATURE_FLAG
    ExperimentEvaluation.create(request, context, overridden_variation, DecisionReason::INDIVIDUAL_TARGET_MATCH)
  else
    raise ArgumentError, "unsupported experiment type [#{request.experiment.type}]"
  end
end