module Fume::RenderCache::ControllerExtensions

Attributes

render_cache_params[RW]

Protected Instance Methods

build_render_cache_key(key) click to toggle source
# File lib/fume/render_cache.rb, line 48
def build_render_cache_key(key)
  base = "render@#{params[:controller]}/#{params[:action]}.#{params[:format]}"
  key = self.key_to_string(key)
  "#{base}##{key}"
end
key_to_string(obj) click to toggle source
# File lib/fume/render_cache.rb, line 54
def key_to_string(obj)
  case obj
  when nil
    "nil!"
  when Hash
    obj.keys.sort.map { |k| "#{k}=#{self.key_to_string(obj[k])}" }.join("&")
  when Array
    obj.map { |val| self.key_to_string(val) }.join(",")
  when Time, Date
    obj.utc.iso8601
  else
    obj.to_s
  end
end
render_cache(key, options) { || ... } click to toggle source
# File lib/fume/render_cache.rb, line 28
def render_cache(key, options)
  params = self.render_cache_params
  
  if params[:cache]
    params[:key] = build_render_cache_key(key)
    params[:options] = options
    
    if page = RenderCachePage.load(params[:cache].read(params[:key]))
      params[:key] = nil
      
      response.charset = page.charset
      response.content_type = page.content_type
      self.response_body = page.body.html_safe
      return
    end
  end
  
  yield if block_given?
end