@@ -63,24 +63,24 @@ def initialize(datafile, event_dispatcher = nil, logger = nil, error_handler = n
63
63
validate_instantiation_options ( datafile , skip_json_validation )
64
64
rescue InvalidInputError => e
65
65
@is_valid = false
66
- logger = SimpleLogger . new
67
- logger . log ( Logger ::ERROR , e . message )
66
+ @ logger = SimpleLogger . new
67
+ @ logger. log ( Logger ::ERROR , e . message )
68
68
return
69
69
end
70
70
71
71
begin
72
72
@config = ProjectConfig . new ( datafile , @logger , @error_handler )
73
73
rescue
74
74
@is_valid = false
75
- logger = SimpleLogger . new
76
- logger . log ( Logger ::ERROR , InvalidInputError . new ( 'datafile' ) . message )
75
+ @ logger = SimpleLogger . new
76
+ @ logger. log ( Logger ::ERROR , InvalidInputError . new ( 'datafile' ) . message )
77
77
return
78
78
end
79
79
80
80
unless @config . parsing_succeeded?
81
81
@is_valid = false
82
- logger = SimpleLogger . new
83
- logger . log ( Logger ::ERROR , InvalidDatafileVersionError . new . message )
82
+ @ logger = SimpleLogger . new
83
+ @ logger. log ( Logger ::ERROR , InvalidDatafileVersionError . new . message )
84
84
return
85
85
end
86
86
@@ -100,8 +100,7 @@ def activate(experiment_key, user_id, attributes = nil)
100
100
# Returns nil if experiment is not Running, if user is not in experiment, or if datafile is invalid.
101
101
102
102
unless @is_valid
103
- logger = SimpleLogger . new
104
- logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'activate' ) . message )
103
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'activate' ) . message )
105
104
return nil
106
105
end
107
106
@@ -137,8 +136,7 @@ def get_variation(experiment_key, user_id, attributes = nil)
137
136
# Returns nil if experiment is not Running, if user is not in experiment, or if datafile is invalid.
138
137
139
138
unless @is_valid
140
- logger = SimpleLogger . new
141
- logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_variation' ) . message )
139
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_variation' ) . message )
142
140
return nil
143
141
end
144
142
@@ -200,8 +198,7 @@ def track(event_key, user_id, attributes = nil, event_tags = nil)
200
198
# event_tags - Hash representing metadata associated with the event.
201
199
202
200
unless @is_valid
203
- logger = SimpleLogger . new
204
- logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'track' ) . message )
201
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'track' ) . message )
205
202
return nil
206
203
end
207
204
@@ -258,10 +255,8 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil)
258
255
# Returns True if the feature is enabled.
259
256
# False if the feature is disabled.
260
257
# False if the feature is not found.
261
-
262
258
unless @is_valid
263
- logger = SimpleLogger . new
264
- logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'is_feature_enabled' ) . message )
259
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'is_feature_enabled' ) . message )
265
260
return false
266
261
end
267
262
@@ -286,22 +281,23 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil)
286
281
end
287
282
288
283
variation = decision [ 'variation' ]
289
- unless variation [ 'featureEnabled' ]
290
- @logger . log ( Logger ::INFO ,
291
- "Feature '#{ feature_flag_key } ' is not enabled for user '#{ user_id } '." )
292
- return false
293
- end
294
-
295
284
if decision . source == Optimizely ::DecisionService ::DECISION_SOURCE_EXPERIMENT
296
285
# Send event if Decision came from an experiment.
297
286
send_impression ( decision . experiment , variation [ 'key' ] , user_id , attributes )
298
287
else
299
288
@logger . log ( Logger ::DEBUG ,
300
289
"The user '#{ user_id } ' is not being experimented on in feature '#{ feature_flag_key } '." )
301
290
end
302
- @logger . log ( Logger ::INFO , "Feature '#{ feature_flag_key } ' is enabled for user '#{ user_id } '." )
303
291
304
- true
292
+ if variation [ 'featureEnabled' ] == true
293
+ @logger . log ( Logger ::INFO ,
294
+ "Feature '#{ feature_flag_key } ' is enabled for user '#{ user_id } '." )
295
+ return true
296
+ else
297
+ @logger . log ( Logger ::INFO ,
298
+ "Feature '#{ feature_flag_key } ' is not enabled for user '#{ user_id } '." )
299
+ return false
300
+ end
305
301
end
306
302
307
303
def get_enabled_features ( user_id , attributes = nil )
@@ -315,8 +311,7 @@ def get_enabled_features(user_id, attributes = nil)
315
311
enabled_features = [ ]
316
312
317
313
unless @is_valid
318
- logger = SimpleLogger . new
319
- logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_enabled_features' ) . message )
314
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_enabled_features' ) . message )
320
315
return enabled_features
321
316
end
322
317
@@ -343,6 +338,11 @@ def get_feature_variable_string(feature_flag_key, variable_key, user_id, attribu
343
338
# Returns the string variable value.
344
339
# Returns nil if the feature flag or variable are not found.
345
340
341
+ unless @is_valid
342
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_feature_variable_string' ) . message )
343
+ return nil
344
+ end
345
+
346
346
variable_value = get_feature_variable_for_type (
347
347
feature_flag_key ,
348
348
variable_key ,
@@ -365,6 +365,11 @@ def get_feature_variable_boolean(feature_flag_key, variable_key, user_id, attrib
365
365
# Returns the boolean variable value.
366
366
# Returns nil if the feature flag or variable are not found.
367
367
368
+ unless @is_valid
369
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_feature_variable_boolean' ) . message )
370
+ return nil
371
+ end
372
+
368
373
variable_value = get_feature_variable_for_type (
369
374
feature_flag_key ,
370
375
variable_key ,
@@ -387,6 +392,11 @@ def get_feature_variable_double(feature_flag_key, variable_key, user_id, attribu
387
392
# Returns the double variable value.
388
393
# Returns nil if the feature flag or variable are not found.
389
394
395
+ unless @is_valid
396
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_feature_variable_double' ) . message )
397
+ return nil
398
+ end
399
+
390
400
variable_value = get_feature_variable_for_type (
391
401
feature_flag_key ,
392
402
variable_key ,
@@ -409,6 +419,11 @@ def get_feature_variable_integer(feature_flag_key, variable_key, user_id, attrib
409
419
# Returns the integer variable value.
410
420
# Returns nil if the feature flag or variable are not found.
411
421
422
+ unless @is_valid
423
+ @logger . log ( Logger ::ERROR , InvalidDatafileError . new ( 'get_feature_variable_integer' ) . message )
424
+ return nil
425
+ end
426
+
412
427
variable_value = get_feature_variable_for_type (
413
428
feature_flag_key ,
414
429
variable_key ,
0 commit comments