Skip to content

Commit 0c7f990

Browse files
oakbanimikeproeng37
authored andcommitted
Feature Toggle (#88)
1 parent a87e217 commit 0c7f990

File tree

5 files changed

+185
-53
lines changed

5 files changed

+185
-53
lines changed

lib/optimizely.rb

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# frozen_string_literal: true
22

33
#
4-
# Copyright 2016-2017, Optimizely and contributors
4+
# Copyright 2016-2018, Optimizely and contributors
55
#
66
# Licensed under the Apache License, Version 2.0 (the "License");
77
# you may not use this file except in compliance with the License.
@@ -263,23 +263,29 @@ def is_feature_enabled(feature_flag_key, user_id, attributes = nil)
263263
end
264264

265265
decision = @decision_service.get_variation_for_feature(feature_flag, user_id, attributes)
266-
unless decision.nil?
267-
variation = decision['variation']
268-
# Send event if Decision came from an experiment.
269-
if decision.source == Optimizely::DecisionService::DECISION_SOURCE_EXPERIMENT
270-
send_impression(decision.experiment, variation['key'], user_id, attributes)
271-
else
272-
@logger.log(Logger::DEBUG,
273-
"The user '#{user_id}' is not being experimented on in feature '#{feature_flag_key}'.")
274-
end
266+
if decision.nil?
267+
@logger.log(Logger::INFO,
268+
"Feature '#{feature_flag_key}' is not enabled for user '#{user_id}'.")
269+
return false
270+
end
271+
272+
variation = decision['variation']
273+
unless variation['featureEnabled']
274+
@logger.log(Logger::INFO,
275+
"Feature '#{feature_flag_key}' is not enabled for user '#{user_id}'.")
276+
return false
277+
end
275278

276-
@logger.log(Logger::INFO, "Feature '#{feature_flag_key}' is enabled for user '#{user_id}'.")
277-
return true
279+
if decision.source == Optimizely::DecisionService::DECISION_SOURCE_EXPERIMENT
280+
# Send event if Decision came from an experiment.
281+
send_impression(decision.experiment, variation['key'], user_id, attributes)
282+
else
283+
@logger.log(Logger::DEBUG,
284+
"The user '#{user_id}' is not being experimented on in feature '#{feature_flag_key}'.")
278285
end
286+
@logger.log(Logger::INFO, "Feature '#{feature_flag_key}' is enabled for user '#{user_id}'.")
279287

280-
@logger.log(Logger::INFO,
281-
"Feature '#{feature_flag_key}' is not enabled for user '#{user_id}'.")
282-
false
288+
true
283289
end
284290

285291
def get_enabled_features(user_id, attributes = nil)

lib/optimizely/project_config.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# frozen_string_literal: true
22

3-
# Copyright 2016-2017, Optimizely and contributors
3+
# Copyright 2016-2018, Optimizely and contributors
44
#
55
# Licensed under the Apache License, Version 2.0 (the "License");
66
# you may not use this file except in compliance with the License.
@@ -126,16 +126,16 @@ def initialize(datafile, logger, error_handler)
126126
@all_experiments = @experiment_key_map.merge(@rollout_experiment_id_map)
127127
@all_experiments.each do |key, exp|
128128
variations = exp.fetch('variations')
129-
@variation_id_map[key] = generate_key_map(variations, 'id')
130-
@variation_key_map[key] = generate_key_map(variations, 'key')
131-
132129
variations.each do |variation|
133130
variation_id = variation['id']
131+
variation['featureEnabled'] = variation['featureEnabled'] == true
134132
variation_variables = variation['variables']
135133
unless variation_variables.nil?
136134
@variation_id_to_variable_usage_map[variation_id] = generate_key_map(variation_variables, 'id')
137135
end
138136
end
137+
@variation_id_map[key] = generate_key_map(variations, 'id')
138+
@variation_key_map[key] = generate_key_map(variations, 'key')
139139
end
140140
@feature_flag_key_map = generate_key_map(@feature_flags, 'key')
141141
@feature_variable_key_map = {}

0 commit comments

Comments
 (0)