Class: Hackle::DefaultRuleExperimentFlowEvaluator
- Inherits:
-
Object
- Object
- Hackle::DefaultRuleExperimentFlowEvaluator
- Includes:
- ExperimentFlowEvaluator
- Defined in:
- lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb
Instance Method Summary collapse
- #evaluate(request, context, _next_flow) ⇒ Object
-
#initialize(action_resolver:) ⇒ DefaultRuleExperimentFlowEvaluator
constructor
A new instance of DefaultRuleExperimentFlowEvaluator.
Constructor Details
#initialize(action_resolver:) ⇒ DefaultRuleExperimentFlowEvaluator
Returns a new instance of DefaultRuleExperimentFlowEvaluator.
181 182 183 184 |
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 181 def initialize(action_resolver:) # @type [ExperimentActionResolver] @action_resolver = action_resolver end |
Instance Method Details
#evaluate(request, context, _next_flow) ⇒ Object
186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 |
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_flow_evaluator.rb', line 186 def evaluate(request, context, _next_flow) if request.experiment.status != ExperimentStatus::RUNNING raise ArgumentError, "experiment status must be RUNNING [#{request.experiment.id}]" end if request.experiment.type != ExperimentType::FEATURE_FLAG raise ArgumentError, "experiment type must be FEATURE_FLAG [#{request.experiment.id}]" end if request.user.identifiers[request.experiment.identifier_type].nil? return ExperimentEvaluation.create_default(request, context, DecisionReason::DEFAULT_RULE) end variation = @action_resolver.resolve_or_nil(request, request.experiment.default_rule) raise ArgumentError, "feature flag must decide the variation [#{request.experiment.id}]" if variation.nil? ExperimentEvaluation.create(request, context, variation, DecisionReason::DEFAULT_RULE) end |