class Roulette

Attributes

stores[RW]

Public Class Methods

new(*stores) click to toggle source
# File lib/roulette.rb, line 17
def initialize(*stores)
  self.stores = stores.flatten
end

Public Instance Methods

each() click to toggle source
# File lib/roulette.rb, line 40
def each
  EachStore.new(stores)
end
extract_key(*args) click to toggle source
# File lib/roulette.rb, line 25
def extract_key(*args)
  args.flatten.first.to_s
end
method_missing(method_name, *args, &blk) click to toggle source
# File lib/roulette.rb, line 21
def method_missing(method_name, *args, &blk)
  Transaction.new(:args => args, :store => select_store(args), :method => method_name).fire
end
select_store(*args) click to toggle source
# File lib/roulette.rb, line 29
def select_store(*args)
  key = extract_key(*args)
  store_for_key(key)
end
store_for_key(key) click to toggle source
# File lib/roulette.rb, line 34
def store_for_key(key)
  val = Digest::SHA1.hexdigest(key).unpack('Q').join.to_i
  store_index = val % stores.count
  self.stores[store_index]
end