Class: Sinatra::TemplateCache

Inherits:
Object
  • Object
show all
Defined in:
lib/sinatra/base.rb

Overview

Extremely simple template cache implementation.

  • Not thread-safe.
  • Size is unbounded.
  • Keys are not copied defensively, and should not be modified after being passed to #fetch. More specifically, the values returned by key#hash and key#eql? should not change.

Implementation copied from Tilt::Cache.

Instance Method Summary collapse

Constructor Details

#initializeTemplateCache

Returns a new instance of TemplateCache.



946
947
948
# File 'lib/sinatra/base.rb', line 946

def initialize
  @cache = {}
end

Instance Method Details

#clearObject

Clears the cache.



961
962
963
# File 'lib/sinatra/base.rb', line 961

def clear
  @cache = {}
end

#fetch(*key) ⇒ Object

Caches a value for key, or returns the previously cached value. If a value has been previously cached for key then it is returned. Otherwise, block is yielded to and its return value which may be nil, is cached under key and returned.



954
955
956
957
958
# File 'lib/sinatra/base.rb', line 954

def fetch(*key)
  @cache.fetch(key) do
    @cache[key] = yield
  end
end