Module: OptimizelyServerSide::Support

Defined in:
lib/optimizely_server_side/helpers/support.rb

Instance Method Summary collapse

Instance Method Details

#experiment(experiment_key, options = {}, &blk) ⇒ Object Also known as: feature_flip

Enables for us to wrap experiments Usage: experiment(‘sign_up_test’) do |config|

config.variation_one('variation_one_key') do
  # Code related to variation one
end

config.variation_two('variation_two_key') do
  # Code related to variation two
end

config.variation_default('variation_default_key', primary: true) do
  # We still want to keep our default experience
end

end



24
25
26
27
28
29
# File 'lib/optimizely_server_side/helpers/support.rb', line 24

def experiment(experiment_key, options = {}, &blk)
  # Merge any other options to user attributes
  OptimizelyServerSide.configuration.user_attributes.merge!(options.stringify_keys)
  variation_key = optimizely_sdk_project_instance(experiment_key, "experiment")
  OptimizelyServerSide::Experiment.new(experiment_key, variation_key).start(&blk)
end

#feature_test(experiment_key, options = {}) ⇒ Object



41
42
43
44
# File 'lib/optimizely_server_side/helpers/support.rb', line 41

def feature_test(experiment_key, options = {})
  OptimizelyServerSide.configuration.user_attributes.merge!(options.stringify_keys)
  optimizely_sdk_project_instance(experiment_key, "feature")
end

#get_optimizely_instanceObject



61
62
63
64
# File 'lib/optimizely_server_side/helpers/support.rb', line 61

def get_optimizely_instance
  OptimizelyServerSide::OptimizelySdk
  .project_instance(event_dispatcher: OptimizelyServerSide.configuration.event_dispatcher)
end

#optimizely_sdk_project_instance(experiment_key, type) ⇒ Object



32
33
34
35
36
37
38
39
# File 'lib/optimizely_server_side/helpers/support.rb', line 32

def optimizely_sdk_project_instance(experiment_key, type)
  case type
  when "experiment"
    get_optimizely_instance.activate(experiment_key, visitor_id, user_attributes)
  when "feature"
    get_optimizely_instance.is_feature_enabled(experiment_key, visitor_id, user_attributes)
  end  
end

#user_attributesObject



57
58
59
# File 'lib/optimizely_server_side/helpers/support.rb', line 57

def user_attributes
  OptimizelyServerSide.configuration.user_attributes.reject { |k,v| k == 'visitor_id'}
end

#visitor_idObject



53
54
55
# File 'lib/optimizely_server_side/helpers/support.rb', line 53

def visitor_id
  OptimizelyServerSide.configuration.user_attributes['visitor_id']
end