module Split::Counters

Constants

VERSION

Public Class Methods

all_counter_names() click to toggle source
# File lib/split/counters.rb, line 56
def self.all_counter_names
  Split.redis.smembers(:counters)
end
all_values_hash(name) click to toggle source
# File lib/split/counters.rb, line 45
def self.all_values_hash(name)
  return_hash = {}
  result_hash = Split.redis.hgetall(self.hash_name_for_name(name))  # {"exp1:alt1"=>"1", "exp1:alt2"=>"2", "exp2:alt1"=>"1", "exp2:alt2"=>"2"}
  result_hash.each do |key, value| 
    experiment, alternative = key.split(":")
    return_hash[experiment] ||= Hash.new
    return_hash[experiment].merge!({ alternative => value.to_i })
  end
  return_hash
end
current_value(name, experiment, alternative) click to toggle source
# File lib/split/counters.rb, line 28
def self.current_value(name, experiment, alternative)
  Split.redis.hget(Split::Counters.hash_name_for_name(name), Split::Counters.keyname_for_experiment_and_alternative(experiment, alternative))
end
delete(name) click to toggle source
# File lib/split/counters.rb, line 36
def self.delete(name)
  Split.redis.srem(:counters, name)
  Split.redis.del(Split::Counters.hash_name_for_name(name))
end
exists?(name) click to toggle source
# File lib/split/counters.rb, line 32
def self.exists?(name)
  Split.redis.exists(Split::Counters.hash_name_for_name(name))
end
hash_name_for_name(in_name) click to toggle source
# File lib/split/counters.rb, line 15
def self.hash_name_for_name(in_name)
  "co:#{in_name}"
end
inc(name, experiment, alternative) click to toggle source
# File lib/split/counters.rb, line 23
def self.inc(name, experiment, alternative)
  Split.redis.sadd(:counters, name)
  Split.redis.hincrby(Split::Counters.hash_name_for_name(name), Split::Counters.keyname_for_experiment_and_alternative(experiment, alternative), 1)
end
keyname_for_experiment_and_alternative(experiment, alternative) click to toggle source
# File lib/split/counters.rb, line 19
def self.keyname_for_experiment_and_alternative(experiment, alternative)
  [experiment.gsub(":", ""), alternative.gsub(":", "")].join(':')
end
reset(name, experiment, alternative) click to toggle source
# File lib/split/counters.rb, line 41
def self.reset(name, experiment, alternative)
  Split.redis.hdel(Split::Counters.hash_name_for_name(name), Split::Counters.keyname_for_experiment_and_alternative(experiment, alternative))
end