Class: ResponseBank::ResponseCacheHandler

Inherits:
Object
  • Object
show all
Defined in:
lib/response_bank/response_cache_handler.rb

Constant Summary collapse

CACHE_KEY_SCHEMA_VERSION =
1

Instance Method Summary collapse

Constructor Details

#initialize(key_data:, version_data:, env:, cache_age_tolerance:, serve_unversioned:, headers:, force_refill_cache: false, cache_store: ResponseBank.cache_store, &block) ⇒ ResponseCacheHandler

Returns a new instance of ResponseCacheHandler.



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/response_bank/response_cache_handler.rb', line 8

def initialize(
  key_data:,
  version_data:,
  env:,
  cache_age_tolerance:,
  serve_unversioned:,
  headers:,
  force_refill_cache: false,
  cache_store: ResponseBank.cache_store,
  &block
)
  @cache_miss_block = block

  @key_data = key_data
  @version_data = version_data
  @env = env
  @cache_age_tolerance = cache_age_tolerance

  @serve_unversioned = serve_unversioned
  @force_refill_cache = force_refill_cache
  @cache_store = cache_store
  @headers = headers || {}
  @key_schema_version = @env.key?('cacheable.key_version') ? @env.key['cacheable.key_version'] : CACHE_KEY_SCHEMA_VERSION
end

Instance Method Details

#cache_key_hashObject



51
52
53
# File 'lib/response_bank/response_cache_handler.rb', line 51

def cache_key_hash
  @cache_key_hash ||= hash(cache_key)
end

#entity_tag_hashObject



47
48
49
# File 'lib/response_bank/response_cache_handler.rb', line 47

def entity_tag_hash
  @entity_tag_hash ||= hash(entity_tag)
end

#run!Object



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/response_bank/response_cache_handler.rb', line 33

def run!
  @env['cacheable.cache']           = true
  @env['cacheable.key']             = entity_tag_hash
  @env['cacheable.unversioned-key'] = cache_key_hash

  ResponseBank.log(cacheable_info_dump)

  if @force_refill_cache
    refill_cache
  else
    try_to_serve_from_cache
  end
end