class Dhall::Rails::Cache

Public Class Methods

new(cache=::Rails.cache) click to toggle source
# File lib/dhall/rails/cache.rb, line 6
def initialize(cache=::Rails.cache)
        @cache = cache
        @ram = Resolvers::RamCache.new
end

Public Instance Methods

fetch(key) { || ... } click to toggle source
# File lib/dhall/rails/cache.rb, line 11
def fetch(key, &block)
        Promise.resolve(nil).then do
                if key.is_a?(String) && key.start_with?("sha256:")
                        unless (in_cache = @cache.read(key)).nil?
                                return in_cache
                        end

                        yield.then { |result| result.tap { @cache.write(key, result) } }
                else
                        @ram.fetch(key, &block)
                end
        end
end