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