Skip to content

Commit a5ef567

Browse files
committed
feat: fixed-rebase-from-get-context-key
2 parents 9755939 + 37c424f commit a5ef567

File tree

3 files changed

+22
-156
lines changed

3 files changed

+22
-156
lines changed

lib/flagsmith/engine/core.rb

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
require_relative 'segments/models'
1414
require_relative 'utils/hash_func'
1515
require_relative 'mappers'
16-
require_relative 'evaluation/core'
1716

1817
module Flagsmith
1918
# Core evaluation logic for feature flags
@@ -29,6 +28,7 @@ module Engine
2928
# @return [Hash] Evaluation result with flags and segments
3029
# returns EvaluationResultWithMetadata
3130
def get_evaluation_result(evaluation_context)
31+
evaluation_context = get_enriched_context(evaluation_context)
3232
segments, segment_overrides = evaluate_segments(evaluation_context)
3333
flags = evaluate_features(evaluation_context, segment_overrides)
3434
{
@@ -141,7 +141,11 @@ def get_multivariate_feature_value(feature, identity_key)
141141
# returns boolean
142142
def should_apply_override(override, existing_overrides)
143143
current_override = existing_overrides[override[:name]]
144-
!current_override || is_stronger_priority?(override[:priority], current_override[:feature][:priority])
144+
!current_override || stronger_priority?(override[:priority], current_override[:feature][:priority])
145+
end
146+
147+
def stronger_priority?(priority_a, priority_b)
148+
(priority_a || WEAKEST_PRIORITY) < (priority_b || WEAKEST_PRIORITY)
145149
end
146150

147151
private
@@ -153,13 +157,7 @@ def should_apply_override(override, existing_overrides)
153157
def get_identity_key(evaluation_context)
154158
return nil unless evaluation_context[:identity]
155159

156-
evaluation_context[:identity][:key] ||
157-
"#{evaluation_context[:environment][:key]}_#{evaluation_context[:identity][:identifier]}"
158-
end
159-
160-
# returns boolean
161-
def is_stronger_priority?(priority_a, priority_b)
162-
(priority_a || WEAKEST_PRIORITY) < (priority_b || WEAKEST_PRIORITY)
160+
evaluation_context[:identity][:key]
163161
end
164162
end
165163
end

lib/flagsmith/engine/evaluation/core.rb

Lines changed: 0 additions & 143 deletions
This file was deleted.

lib/flagsmith/engine/segments/evaluator.rb

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,19 @@ module Evaluator # rubocop:disable Metrics/ModuleLength
1616

1717
module_function
1818

19-
# Context-based segment evaluation (new approach)
19+
def get_enriched_context(context)
20+
identity_context = context[:identity]
21+
return context unless identity_context
22+
return context if identity_context[:key]
23+
24+
enriched_context = context.dup
25+
enriched_context[:identity] = identity_context.merge(
26+
key: "#{context[:environment][:key]}_#{identity_context[:identifier]}"
27+
)
28+
enriched_context
29+
end
30+
31+
# Context-based segment evaluation
2032
# Returns all segments that the identity belongs to based on segment rules evaluation
2133
#
2234
# @param context [Hash] Evaluation context containing identity and segment definitions
@@ -85,7 +97,7 @@ def traits_match_segment_rule(identity_traits, rule, segment_id, identity_id)
8597
end
8698
# rubocop:enable Metrics/MethodLength
8799

88-
# Context-based helper functions (new approach)
100+
# Context-based helper functions
89101

90102
# Evaluates whether a segment rule matches using context
91103
#
@@ -217,8 +229,7 @@ def get_context_value(json_path, context)
217229
def get_identity_key_from_context(context)
218230
return nil unless context[:identity]
219231

220-
context[:identity][:key] ||
221-
"#{context[:environment][:key]}_#{context[:identity][:identifier]}"
232+
context[:identity][:key]
222233
end
223234

224235
# Check if value is primitive (not an object or array)

0 commit comments

Comments
 (0)