class Fabes::ConnectionAdapters::RedisAdapter
Public Class Methods
new(redis)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 12 def initialize(redis) @redis = redis end
Public Instance Methods
all_experiments()
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 47 def all_experiments experiments = Array.new names = get_all_experiment_names names.each do |name| experiments << load_experiment(name) end experiments end
clear!()
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 16 def clear! @redis.flushdb end
find_experiment(name)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 27 def find_experiment(name) if @redis.sismember "fabes:experiments", name load_experiment(name) else nil end end
increment_hits!(id)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 35 def increment_hits!(id) @redis.hincrby "fabes:alternatives_pool:#{id}", 'hits', 1 end
increment_participants!(id)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 39 def increment_participants!(id) @redis.hincrby "fabes:alternatives_pool:#{id}", 'participants', 1 end
save_experiment(experiment)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 20 def save_experiment(experiment) add_to_current_experiments(experiment.name) save_experiment_data(experiment) rescue raise "Unable to save experiment" end
update_weight(id, weight)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 43 def update_weight(id, weight) @redis.hset "fabes:alternatives_pool:#{id}", 'weight', weight end
Private Instance Methods
add_to_alternatives(base, alternative)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 81 def add_to_alternatives(base, alternative) @redis.rpush "fabes:alternatives:#{base}", alternative end
add_to_current_experiments(name)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 62 def add_to_current_experiments(name) @redis.sadd "fabes:experiments", name end
get_all_experiment_names()
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 58 def get_all_experiment_names @redis.smembers 'fabes:experiments' end
load_alternative(id)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 103 def load_alternative(id) data = @redis.hgetall "fabes:alternatives_pool:#{id}" Alternative.create_from data end
load_alternatives(base)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 94 def load_alternatives(base) alternatives = Array.new ids = @redis.lrange "fabes:alternatives:#{base}", 0, -1 ids.each do |id| alternatives.push load_alternative(id) end alternatives end
load_experiment(name)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 85 def load_experiment(name) experiment = Experiment.new(name) alternatives = load_alternatives(name) alternatives.each do |alternative| experiment.add_alternative(alternative) end experiment end
save_alternatives(base, alternatives)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 70 def save_alternatives(base, alternatives) alternatives.each do |alt| add_to_alternatives(base, alt.id) data = Array.new alt.instance_variables.each do |var| data << var.slice(1..-1) << alt.instance_variable_get(var) end @redis.hmset "fabes:alternatives_pool:#{alt.id}", *data end end
save_experiment_data(experiment)
click to toggle source
# File lib/fabes/connection_adapters/redis_adapter.rb, line 66 def save_experiment_data(experiment) save_alternatives(experiment.name, experiment.alternatives) end