Sha256: d693ae1e9bddc61f94ef3500d296f3d7f32badf1d195602d0d9619ff47d0f0cd
Contents?: true
Size: 1.06 KB
Versions: 3
Compression:
Stored size: 1.06 KB
Contents
# frozen_string_literal: true module IdentityCache class FallbackFetcher attr_accessor :cache_backend def initialize(cache_backend) @cache_backend = cache_backend end def write(key, value) @cache_backend.write(key, value) if IdentityCache.should_fill_cache? end def delete(key) @cache_backend.delete(key) end def clear @cache_backend.clear end def fetch_multi(keys) results = @cache_backend.read_multi(*keys) missed_keys = keys - results.keys unless missed_keys.empty? replacement_results = yield missed_keys missed_keys.zip(replacement_results) do |key, replacement_result| @cache_backend.write(key, replacement_result) if IdentityCache.should_fill_cache? results[key] = replacement_result end end results end def fetch(key) result = @cache_backend.read(key) if result.nil? result = yield @cache_backend.write(key, result) if IdentityCache.should_fill_cache? end result end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
identity_cache-1.1.0 | lib/identity_cache/fallback_fetcher.rb |
identity_cache-1.0.1 | lib/identity_cache/fallback_fetcher.rb |
identity_cache-1.0.0 | lib/identity_cache/fallback_fetcher.rb |