class TrailGuide::Experiments::Base

Attributes

participant[R]

Public Class Methods

as_json(opts={}) click to toggle source
# File lib/trail_guide/experiments/base.rb, line 58
def as_json(opts={})
  { experiment_name => {
    started_at: started_at,
    paused_at: paused_at,
    stopped_at: stopped_at,
    winner: winner.try(:name),
    variants: variants.map(&:as_json).reduce({}) { |r,v| r.merge!(v) },
  } }
end
combined_experiments() click to toggle source
# File lib/trail_guide/experiments/base.rb, line 54
def combined_experiments
  combined.map { |combo| TrailGuide.catalog.find(combo) }
end
configuration() click to toggle source
# File lib/trail_guide/experiments/base.rb, line 29
def configuration
  @configuration ||= Experiments::Config.new(self)
end
configure(*args, &block) click to toggle source
# File lib/trail_guide/experiments/base.rb, line 33
def configure(*args, &block)
  configuration.configure(*args, &block)
end
experiment_name() click to toggle source

TODO alias name once specs have solid coverage

# File lib/trail_guide/experiments/base.rb, line 38
def experiment_name
  configuration.name
end
is_combined?() click to toggle source
# File lib/trail_guide/experiments/base.rb, line 50
def is_combined?
  false
end
new(participant) click to toggle source
# File lib/trail_guide/experiments/base.rb, line 76
def initialize(participant)
  @participant = Experiments::Participant.new(self, participant)
end
register!() click to toggle source
# File lib/trail_guide/experiments/base.rb, line 25
def register!
  TrailGuide.catalog.register(self)
end
variants(include_control=true) click to toggle source
# File lib/trail_guide/experiments/base.rb, line 42
def variants(include_control=true)
  if include_control
    configuration.variants
  else
    configuration.variants.select { |var| !var.control? }
  end
end

Public Instance Methods

combined_experiments() click to toggle source
# File lib/trail_guide/experiments/base.rb, line 80
def combined_experiments
  @combined_experiments ||= self.class.combined_experiments.map do |combo|
    combo.new(participant.participant)
  end
end