Class: Hackle::ExperimentContainerResolver

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

Instance Method Summary collapse

Constructor Details

#initialize(bucketer:) ⇒ ExperimentContainerResolver

Returns a new instance of ExperimentContainerResolver.

Parameters:



110
111
112
113
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_resolver.rb', line 110

def initialize(bucketer:)
  # @type [Bucketer]
  @bucketer = bucketer
end

Instance Method Details

#user_in_container_group?(request, container) ⇒ Boolean

Parameters:

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/hackle/internal/evaluation/evaluator/experiment/experiment_resolver.rb', line 117

def user_in_container_group?(request, container)

  identifier = request.user.identifiers[request.experiment.identifier_type]
  return false if identifier.nil?

  bucket = request.workspace.get_bucket_or_nil(container.bucket_id)
  raise ArgumentError, "bucket [#{container.bucket_id}]" if bucket.nil?

  slot = @bucketer.bucketing(bucket, identifier)
  return false if slot.nil?

  group = container.get_group_or_nil(slot.variation_id)
  raise ArgumentError, "container group [#{slot.variation_id}]" if group.nil?

  group.experiments.include?(request.experiment.id)
end