Sha256: 6a42c0310ddf982fe2916b12e3431a8e38da93fe9e15485c7b8da30a2e8cbc7c

Contents?: true

Size: 779 Bytes

Versions: 4

Compression:

Stored size: 779 Bytes

Contents

# frozen_string_literal: true

require 'thermos/beverage'
require 'thermos/beverage_storage'
require 'thermos/dependency'
require 'thermos/notifier'
require 'thermos/refill_job'
require 'thermos/rebuild_cache_job'

module Thermos
  def self.keep_warm(key:, model:, id:, deps: [], lookup_key: nil, &block)
    fill(key: key, model: model, deps: deps, lookup_key: lookup_key, &block)
    drink(key: key, id: id)
  end

  def self.fill(key:, model:, deps: [], lookup_key: nil, &block)
    BeverageStorage.instance.add_beverage(
      Beverage.new(key: key, model: model, deps: deps, action: block, lookup_key: lookup_key)
    )
  end

  def self.drink(key:, id:)
    Rails.cache.fetch([key, id]) do
      BeverageStorage.instance.get_beverage(key).action.call(id)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
thermos-0.3.0 lib/thermos.rb
thermos-0.2.1 lib/thermos.rb
thermos-0.2.0 lib/thermos.rb
thermos-0.1.1 lib/thermos.rb