Skip to content

Commit 351e055

Browse files
update: Refactor CMAB client initialization and enhance audience conditions parsing
1 parent 7851796 commit 351e055

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

lib/optimizely.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,8 +139,9 @@ def initialize(
139139

140140
# Initialize CMAB components
141141
@cmab_client = DefaultCmabClient.new(
142-
retry_config: CmabRetryConfig.new,
143-
logger: @logger
142+
nil,
143+
CmabRetryConfig.new,
144+
@logger
144145
)
145146
@cmab_cache = LRUCache.new(DEFAULT_CMAB_CACHE_SIZE, DEFAULT_CMAB_CACHE_TIMEOUT)
146147
@cmab_service = DefaultCmabService.new(

lib/optimizely/audience.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,20 @@ def user_meets_audience_conditions?(config, experiment, user_context, logger, lo
7272
decide_reasons.push(message)
7373

7474
audience_conditions = JSON.parse(audience_conditions) if audience_conditions.is_a?(String)
75+
# Convert all symbol keys to string keys in the parsed conditions
76+
stringify_keys = lambda do |obj|
77+
case obj
78+
when Hash
79+
obj.transform_keys(&:to_s).transform_values { |v| stringify_keys.call(v) }
80+
when Array
81+
obj.map { |item| stringify_keys.call(item) }
82+
else
83+
obj
84+
end
85+
end
86+
87+
audience_conditions = stringify_keys.call(audience_conditions)
88+
7589
result = ConditionTreeEvaluator.evaluate(audience_conditions, evaluate_user_conditions)
7690
result_str = result.nil? ? 'UNKNOWN' : result.to_s.upcase
7791
message = format(logs_hash['AUDIENCE_EVALUATION_RESULT'], audience_id, result_str)

0 commit comments

Comments
 (0)