Class: Hackle::RemoteConfigTargetRuleMatcher

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

Instance Method Summary collapse

Constructor Details

#initialize(target_matcher:, bucketer:) ⇒ RemoteConfigTargetRuleMatcher

Returns a new instance of RemoteConfigTargetRuleMatcher.

Parameters:



23
24
25
26
27
28
# File 'lib/hackle/internal/evaluation/evaluator/remoteconfig/remote_config_determiner.rb', line 23

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

Instance Method Details

#matches(request, context, target_rule) ⇒ boolean

Parameters:

Returns:

  • (boolean)

Raises:

  • (ArgumentError)


34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/hackle/internal/evaluation/evaluator/remoteconfig/remote_config_determiner.rb', line 34

def matches(request, context, target_rule)
  matches = @target_matcher.matches(request, context, target_rule.target)
  return false unless matches

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

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

  allocated = @bucketer.bucketing(bucket, identifier)
  !allocated.nil?
end