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