Sha256: d4179a63df4e75880d5f9e132588660fe5c5157859ac65947d2aef842caf404b
Contents?: true
Size: 708 Bytes
Versions: 4
Compression:
Stored size: 708 Bytes
Contents
module Metry class Experiment METHODS = { "rand" => proc{|list, visitor| list.sort_by{rand}.first}, "mod_visitor" => proc{|list, visitor| list[(visitor.to_i-1)%list.size]}, } def initialize(name, event) @key = "experiment.#{name}" @event = event @visitor = event["visitor"] @storage = Metry.current end def choose(options, method=nil) visitor_hash = @storage.visitor(@visitor) unless choice = visitor_hash[@key] choice = METHODS[method || "rand"][options.keys, @visitor] @storage.save_visitor(@visitor, visitor_hash.merge(@key => choice)) end @event[@key] = choice options[choice] end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
metry-1.0.0 | lib/metry/experiment.rb |
metry-1.0.1 | lib/metry/experiment.rb |
metry-1.1.0 | lib/metry/experiment.rb |
metry-1.2.0 | lib/metry/experiment.rb |