Class: TrailGuide::CombinedExperiment

Inherits:
Experiments::Base show all
Defined in:
lib/trail_guide/combined_experiment.rb

Instance Attribute Summary

Attributes inherited from Experiments::Base

#participant

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Experiments::Base

as_json, #combined_experiments, combined_experiments, configure, experiment_name, #initialize, register!, variants

Methods included from Experiments::Results

included, #winner, #winning_variant

Methods included from Experiments::Conversion

#allow_conversion?, #convert!

Methods included from Experiments::Enrollment

#algorithm, #allow_participation?, #choose!, #choose_variant!, #track_participation?

Methods included from Experiments::Lifecycle

#calibrating?, included, #paused?, #paused_at, #run_callbacks, #running?, #scheduled?, #start!, #started?, #started_at, #stopped?, #stopped_at, #winner?

Methods included from Experiments::Persistence

included

Constructor Details

This class inherits a constructor from TrailGuide::Experiments::Base

Class Method Details

.configurationObject



9
10
11
# File 'lib/trail_guide/combined_experiment.rb', line 9

def configuration
  @configuration ||= Experiments::CombinedConfig.new(self)
end

.is_combined?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/trail_guide/combined_experiment.rb', line 13

def is_combined?
  true
end

.pause!Object



26
27
28
# File 'lib/trail_guide/combined_experiment.rb', line 26

def pause!
  parent.pause!
end

.paused_atObject



42
43
44
# File 'lib/trail_guide/combined_experiment.rb', line 42

def paused_at
  parent.paused_at
end

.resume!Object



34
35
36
# File 'lib/trail_guide/combined_experiment.rb', line 34

def resume!
  parent.resume!
end

.start!Object

TODO if just I delegate on this inheriting class, will that override the defined methods on the base class? and will they interplay nicely? like with ‘started?` calling `started_at`, etc.?

really wishing i’d written some specs right about now :-P



22
23
24
# File 'lib/trail_guide/combined_experiment.rb', line 22

def start!
  parent.start!
end

.started_atObject



38
39
40
# File 'lib/trail_guide/combined_experiment.rb', line 38

def started_at
  parent.started_at
end

.stop!Object



30
31
32
# File 'lib/trail_guide/combined_experiment.rb', line 30

def stop!
  parent.stop!
end

.stopped_atObject



46
47
48
# File 'lib/trail_guide/combined_experiment.rb', line 46

def stopped_at
  parent.stopped_at
end

Instance Method Details

#algorithm_choose!(metadata: nil) ⇒ Object

use the parent experiment as the algorithm and map to the matching variant



56
57
58
59
# File 'lib/trail_guide/combined_experiment.rb', line 56

def algorithm_choose!(metadata: nil)
  variant = parent.choose!(metadata: )
  variants.find { |var| var == variant.name }
end

#parentObject



51
52
53
# File 'lib/trail_guide/combined_experiment.rb', line 51

def parent
  @parent ||= self.class.parent.new(participant.participant)
end