Sha256: 67e53463ed1030b8dd368f48ecb1ec418f82adc31f555df8f2950bc0263a695d
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
module Lawnchair module StorageEngine class Composite attr_reader :storage_engines def initialize @storage_engines = [] end def register_storage_engine(storage_engine) storage_engines << storage_engine end def fetch(key, options, &block) raise "No Storage Engines Configured" if storage_engines.empty? value, index = find_in_storage(key, options) value ||= yield place_in_storage(key, value, options, index) end private def find_in_storage(key, options) value, index = nil, nil storage_engines.each_with_index do |storage_engine, i| if storage_engine.exists?(key) value = storage_engine.get(key, options) index = i break end end return value, index end def place_in_storage(key, value, options, index) storage_engines.each_with_index do |storage_engine, i| break if i == index storage_engine.set(key, value, options) end value end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
lawnchair-0.5.1 | lib/storage_engine/composite.rb |
lawnchair-0.5.0 | lib/storage_engine/composite.rb |