Class: Fino::Rails::RequestScopedCache::Pipe

Inherits:
Object
  • Object
show all
Includes:
Pipe
Defined in:
lib/fino/rails/request_scoped_cache/pipe.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.with_temporary_cache(cache_wrapper_block) ⇒ Object



6
7
8
9
10
11
# File 'lib/fino/rails/request_scoped_cache/pipe.rb', line 6

def self.with_temporary_cache(cache_wrapper_block)
  Thread.current[:fino_request_scoped_cache] = cache_wrapper_block.call(Fino::Rails::RequestScopedCache::Store.new)
  yield
ensure
  Thread.current[:fino_request_scoped_cache] = nil
end

Instance Method Details

#read(setting_definition) ⇒ Object



13
14
15
16
17
18
19
# File 'lib/fino/rails/request_scoped_cache/pipe.rb', line 13

def read(setting_definition)
  return cache.read(setting_definition.key) if cache.exist?(setting_definition.key)

  pipe.read(setting_definition).tap do |result|
    cache.write(setting_definition.key, result)
  end
end

#read_multi(setting_definitions) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/fino/rails/request_scoped_cache/pipe.rb', line 21

def read_multi(setting_definitions)
  cache.fetch_multi(*setting_definitions.map(&:key)) do |missing_keys|
    uncached_setting_definitions = setting_definitions.filter { |sd| missing_keys.include?(sd.key) }

    missing_keys.zip(pipe.read_multi(uncached_setting_definitions))
  end
end

#write(setting_definition, value, overrides, variants) ⇒ Object



29
30
31
32
33
# File 'lib/fino/rails/request_scoped_cache/pipe.rb', line 29

def write(setting_definition, value, overrides, variants)
  pipe.write(setting_definition, value, overrides, variants)

  cache.delete(setting_definition.key)
end