Method: Tenjin::ContextHelper#cache_with
- Defined in:
- lib/tenjin.rb
#cache_with(cache_key, lifetime = nil) ⇒ Object
cache fragment data
ex.
kv_store = Tenjin::FileBaseStore.new("/var/tmp/myapp/dacache")
Tenjin::Engine.data_cache = kv_store
engine = Tenjin::Engine.new
# or engine = Tenjin::Engine.new(:data_cache=>kv_store)
entries = proc { Entry.find(:all) }
html = engine.render("index.rbhtml", {:entries => entries})
index.rbhtml:
<html>
<body>
<?rb cache_with("entries/index", 5*60) do ?>
<?rb entries = @entries.call ?>
<ul>
<?rb for entry in entries ?>
<li>${entry.title}</li>
<?rb end ?>
</ul>
<?rb end ?>
</body>
</html>
376 377 378 379 380 381 382 383 384 385 386 387 388 389 |
# File 'lib/tenjin.rb', line 376 def cache_with(cache_key, lifetime=nil) kv_store = self._engine.data_cache or raise ArgumentError.new("data_cache object is not set for engine object.") data = kv_store.get(cache_key, self._template.) if data echo data else pos = self._buf.length yield data = self._buf[pos..-1] kv_store.set(cache_key, data, lifetime) end nil end |