Allow custom cache expiry
This commit is contained in:
@@ -22,8 +22,8 @@ module Adamantium
|
||||
handle_exception ROM::TupleCountMismatchError => :not_found
|
||||
handle_exception StandardError => :handle_error
|
||||
|
||||
def cache(key:, content:)
|
||||
cacher.call(key: key, content: content, expiry: TimeMath.min.advance(Time.now, +10))
|
||||
def cache(key:, content_proc:, expiry: TimeMath.min.advance(Time.now, +10))
|
||||
cacher.call(key: key, content_proc: content_proc, expiry: expiry)
|
||||
end
|
||||
|
||||
def not_found(_req, res, _exception)
|
||||
|
@@ -7,7 +7,7 @@ module Adamantium
|
||||
include Deps["views.recently_played.index"]
|
||||
|
||||
def handle(req, res)
|
||||
res.body = cache(key: "recently_played", content: index.call.to_str)
|
||||
res.body = cache(key: "recently_played", content_proc: -> { index.call.to_str })
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@@ -3,18 +3,20 @@ require "json"
|
||||
module Adamantium
|
||||
module ViewCache
|
||||
class Cacher
|
||||
def call(key:, content:, expiry:)
|
||||
def call(key:, content_proc:, expiry:)
|
||||
cached_content = read(key: key)
|
||||
|
||||
return cached_content if cached_content
|
||||
|
||||
data = JSON.generate(expire: expiry.to_i, content: content)
|
||||
rendered_content = content_proc.()
|
||||
|
||||
data = JSON.generate(expire: expiry.to_i, content: rendered_content)
|
||||
|
||||
path = "#{key}.json"
|
||||
|
||||
File.write(File.join(Hanami.app.root, "tmp", path), data)
|
||||
|
||||
content
|
||||
rendered_content
|
||||
end
|
||||
|
||||
private
|
||||
|
Reference in New Issue
Block a user