class Rack::Cache::EntityStore::HEAP

Stores entity bodies on the heap using a Hash object.

Public Class Methods

new(hash={}, options = {}) click to toggle source

Create the store with the specified backing Hash.

# File lib/rack/cache/entity_store.rb, line 37
def initialize(hash={}, options = {})
  @hash = hash
  @options = options
end
resolve(uri, options = {}) click to toggle source
# File lib/rack/cache/entity_store.rb, line 74
def self.resolve(uri, options = {})
  new({}, options)
end

Public Instance Methods

exist?(key) click to toggle source

Determine whether the response body with the specified key (SHA1) exists in the store.

# File lib/rack/cache/entity_store.rb, line 44
def exist?(key)
  @hash.include?(key)
end
open(key) click to toggle source

Return an object suitable for use as a Rack response body for the specified key.

# File lib/rack/cache/entity_store.rb, line 50
def open(key)
  (body = @hash[key]) && body.dup
end
purge(key) click to toggle source

Remove the body corresponding to key; return nil.

# File lib/rack/cache/entity_store.rb, line 69
def purge(key)
  @hash.delete(key)
  nil
end
read(key) click to toggle source

Read all data associated with the given key and return as a single String.

# File lib/rack/cache/entity_store.rb, line 56
def read(key)
  (body = @hash[key]) && body.join
end
write(body, ttl=nil) click to toggle source

Write the Rack response body immediately and return the SHA1 key.

# File lib/rack/cache/entity_store.rb, line 61
def write(body, ttl=nil)
  buf = []
  key, size = slurp(body) { |part| buf << part }
  @hash[key] = buf
  [key, size]
end