Module: Sinatra::SimpleCache
- Defined in:
- lib/sinatra/simplecache.rb,
lib/sinatra/simplecache/version.rb
Constant Summary collapse
- VERSION =
"0.0.1"
Instance Method Summary collapse
-
#cache(opts = {}, &block) ⇒ Object
Example.
Instance Method Details
#cache(opts = {}, &block) ⇒ Object
Example.
For operation cache:
@@users = MySQL.query("...").to_a
//=> @@users = cache(key: "users", expire: 0.6) { MySQL.query("...").to_a }
For page cache:
slim: index
//=> cache(expire: 0.3) {slim: index}
For fragment cache:
@@sidebar = cache(key: "sidebar", expire: 1) { slim: sidebar }
slim :detail, :locales = { :sidebar => @@sidebar }
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/sinatra/simplecache.rb', line 20 def cache(opts={}, &block) @@entries ||= {} now = Time.now.to_f expire = opts[:expire] ? (opts[:expire] + now) : (@@inf ||= 1/0.0) key = opts[:key] || (defined?(Sinatra) && request.path) || abort("set key") if (e = @@entries[key]) && (e[:expire] > now) return e[:value] end value = block.call @@entries[key] = { expire: expire, value: value } value end |