Skip to content

Commit

Permalink
Convert legacy sets of alternative names to lists
Browse files Browse the repository at this point in the history
  • Loading branch information
andrew committed May 29, 2011
1 parent b9b9a4e commit b2b5cc3
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions lib/split/experiment.rb
Expand Up @@ -49,21 +49,33 @@ def save
@alternative_names.reverse.each {|a| Split.redis.lpush(name, a) }
end

def self.load_alternatives_for(name)
case Split.redis.type(name)
when 'set' # convert legacy sets to lists
alts = Split.redis.smembers(name)
Split.redis.del(name)
alts.reverse.each {|a| Split.redis.lpush(name, a) }
Split.redis.lrange(name, 0, -1)
else
Split.redis.lrange(name, 0, -1)
end
end

def self.all
Array(Split.redis.smembers(:experiments)).map {|e| find(e)}
end

def self.find(name)
if Split.redis.exists(name)
self.new(name, *Split.redis.lrange(name, 0, -1))
self.new(name, *load_alternatives_for(name))
else
raise 'Experiment not found'
end
end

def self.find_or_create(name, *alternatives)
if Split.redis.exists(name)
return self.new(name, *Split.redis.lrange(name, 0, -1))
return self.new(name, *load_alternatives_for(name))
else
experiment = self.new(name, *alternatives)
experiment.save
Expand Down

0 comments on commit b2b5cc3

Please sign in to comment.