Module: Split::Counters
- Defined in:
- lib/split/counters.rb,
lib/split/counters/version.rb
Constant Summary collapse
- VERSION =
"0.3.1"
Class Method Summary collapse
- .all_counter_names ⇒ Object
- .all_values_hash(name) ⇒ Object
- .current_value(name, experiment, alternative) ⇒ Object
- .delete(name) ⇒ Object
- .exists?(name) ⇒ Boolean
- .hash_name_for_name(in_name) ⇒ Object
- .inc(name, experiment, alternative) ⇒ Object
- .keyname_for_experiment_and_alternative(experiment, alternative) ⇒ Object
- .reset(name, experiment, alternative) ⇒ Object
Class Method Details
.all_counter_names ⇒ Object
56 57 58 |
# File 'lib/split/counters.rb', line 56 def self.all_counter_names Split.redis.smembers(:counters) end |
.all_values_hash(name) ⇒ Object
45 46 47 48 49 50 51 52 53 54 |
# 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) ⇒ Object
28 29 30 |
# 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) ⇒ Object
36 37 38 39 |
# 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) ⇒ Boolean
32 33 34 |
# 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) ⇒ Object
15 16 17 |
# File 'lib/split/counters.rb', line 15 def self.hash_name_for_name(in_name) "co:#{in_name}" end |
.inc(name, experiment, alternative) ⇒ Object
23 24 25 26 |
# 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) ⇒ Object
19 20 21 |
# 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) ⇒ Object
41 42 43 |
# 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 |