Class: OptimizelyServerSide::Experiment
- Inherits:
-
Object
- Object
- OptimizelyServerSide::Experiment
- Defined in:
- lib/optimizely_server_side/experiment.rb
Instance Method Summary collapse
-
#applicable_variation ⇒ Object
Selects and calls the variation which is applicable In case of running test the applicable variation key is present In case of fallback / paused test we pick the primary variation.
-
#initialize(experiment_key, selected_variation_key) ⇒ Experiment
constructor
A new instance of Experiment.
-
#method_missing(key, *args, &blk) ⇒ Object
Support for variation_three, variation_four till variation_n.
-
#omniture_tag(evar: nil) ⇒ Object
Hidden omniture tag for HTML tracking.
-
#primary_variation ⇒ Object
Primary variation is where primary: true.
-
#start {|_self| ... } ⇒ Object
Starts the experiment.
- #variation_default(key, opts = {}, &blk) ⇒ Object
- #variation_one(key, opts = {}, &blk) ⇒ Object
- #variation_two(key, opts = {}, &blk) ⇒ Object
Constructor Details
#initialize(experiment_key, selected_variation_key) ⇒ Experiment
Returns a new instance of Experiment.
8 9 10 11 12 |
# File 'lib/optimizely_server_side/experiment.rb', line 8 def initialize(experiment_key, selected_variation_key) @selected_variation_key = selected_variation_key @experiment_key = experiment_key @variations = [] end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(key, *args, &blk) ⇒ Object
Support for variation_three, variation_four till variation_n
43 44 45 46 47 48 49 |
# File 'lib/optimizely_server_side/experiment.rb', line 43 def method_missing(key, *args, &blk) if key.to_s.match('variation_') add_variation(args[0], args[1] || {}, &blk) else super end end |
Instance Method Details
#applicable_variation ⇒ Object
Selects and calls the variation which is applicable In case of running test the applicable variation key is present In case of fallback / paused test we pick the primary variation
54 55 56 57 58 59 60 61 62 |
# File 'lib/optimizely_server_side/experiment.rb', line 54 def applicable_variation ActiveSupport::Notifications.instrument "oss.variation", variation: @selected_variation_key, experiment: @experiment_key, visitor_id: OptimizelyServerSide.configuration.user_attributes['visitor_id'] do if @variations.any?(&variation_selector) @variations.find(&variation_selector).call else primary_variation.call if primary_variation end end end |
#omniture_tag(evar: nil) ⇒ Object
Hidden omniture tag for HTML tracking
15 16 17 18 19 20 21 22 |
# File 'lib/optimizely_server_side/experiment.rb', line 15 def omniture_tag(evar: nil) if @selected_variation_key #"<input type='hidden' data-optimizely=#{@experiment_key}:#{@selected_variation_key} data-optimizely-evar=#{evar}></input>".html_safe #{}"<input type='hidden' data-optimizely=#{@experiment_key}:#{@selected_variation_key} data-optimizely-evar=#{evar}></input>".html_safe key = "#{@experiment_key}:#{@selected_variation_key}" %Q(<input type="hidden" name="ab_#{key}" id="ab_id_#{key}" value="" data-optimizely="#{key}" data-optimizely-evar="#{evar}"/>).html_safe end end |
#primary_variation ⇒ Object
Primary variation is where primary: true
65 66 67 |
# File 'lib/optimizely_server_side/experiment.rb', line 65 def primary_variation @primary_variation ||= @variations.find(&:primary) end |
#start {|_self| ... } ⇒ Object
Starts the experiment
25 26 27 28 |
# File 'lib/optimizely_server_side/experiment.rb', line 25 def start yield(self) self.applicable_variation end |
#variation_default(key, opts = {}, &blk) ⇒ Object
38 39 40 |
# File 'lib/optimizely_server_side/experiment.rb', line 38 def variation_default(key, opts = {}, &blk) add_variation(key, opts, &blk) end |
#variation_one(key, opts = {}, &blk) ⇒ Object
30 31 32 |
# File 'lib/optimizely_server_side/experiment.rb', line 30 def variation_one(key, opts = {}, &blk) add_variation(key, opts, &blk) end |
#variation_two(key, opts = {}, &blk) ⇒ Object
34 35 36 |
# File 'lib/optimizely_server_side/experiment.rb', line 34 def variation_two(key, opts = {}, &blk) add_variation(key, opts, &blk) end |