Class: ActionController::Caching::Actions::ActionCacheFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/action_controller/caching/actions.rb

Overview

:nodoc:

Instance Method Summary collapse

Constructor Details

#initialize(options, &block) ⇒ ActionCacheFilter

Returns a new instance of ActionCacheFilter.



84
85
86
# File 'lib/action_controller/caching/actions.rb', line 84

def initialize(options, &block)
  @options = options
end

Instance Method Details

#after(controller) ⇒ Object



108
109
110
111
112
# File 'lib/action_controller/caching/actions.rb', line 108

def after(controller)
  return if controller.rendered_action_cache || !caching_allowed(controller)
  action_content = cache_layout? ? content_for_layout(controller) : controller.response.body
  controller.write_fragment(controller.action_cache_path.path, action_content, @options[:store_options])
end

#before(controller) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/action_controller/caching/actions.rb', line 94

def before(controller)
  cache_path = ActionCachePath.new(controller, path_options_for(controller, @options.slice(:cache_path)))
  if cache = controller.read_fragment(cache_path.path, @options[:store_options])
    controller.rendered_action_cache = true
    set_content_type!(controller, cache_path.extension)
    options = { :text => cache }
    options.merge!(:layout => true) if cache_layout?
    controller.__send__(:render, options)
    false
  else
    controller.action_cache_path = cache_path
  end
end

#filter(controller, action) ⇒ Object



88
89
90
91
92
# File 'lib/action_controller/caching/actions.rb', line 88

def filter(controller, action)
  should_continue = before(controller)
  action.call if should_continue
  after(controller)
end