Class: Metry::Experiment

Inherits:
Object
  • Object
show all
Defined in:
lib/metry/experiment.rb

Constant Summary collapse

METHODS =
{
  "rand" => proc{|list, visitor| list.sort_by{rand}.first},
  "mod_visitor" => proc{|list, visitor| list[(visitor['_id'].to_i-1)%list.size]}, # mod_visitor will only work with predictable_keys = true
}

Instance Method Summary collapse

Constructor Details

#initialize(name, event, visitor) ⇒ Experiment

Returns a new instance of Experiment.



8
9
10
11
12
# File 'lib/metry/experiment.rb', line 8

def initialize(name, event, visitor)
  @key = "experiment:#{name}"
  @event = event
  @visitor = visitor
end

Instance Method Details

#choose(options, method = nil) ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/metry/experiment.rb', line 14

def choose(options, method=nil)
  unless choice = @visitor[@key]
    choice = METHODS[method || "rand"][options.keys, @visitor]
    @visitor[@key] = choice
  end
  @event[@key] = choice
  options[choice]
end