method

append_around_filter

append_around_filter(*filters, &block)
public

If you append_around_filter A.new, B.new, the filter chain looks like

  B#before
    A#before
      # run the action
    A#after
  B#after

With around filters which yield to the action block, before and after are the code before and after the yield.

2Notes

around_filter - working example

hipertracker · Aug 7, 20086 thanks

More detailed, working example of usage:

class HomeController < ApplicationController   
around_filter :action1, :action2

around_filter do |controller, action|
  logger.info "code block before action"
  action.call
  logger.info "code block after action"
end

def index
  logger.info "ACTION"
end       

private # filters should not be available for external URL

def action1            
  logger.info "ACTION1 before yield"
  yield "ACTION1" 
  logger.info "ACTION1 after yield"
end

def action2            
  logger.info "ACTION2 before yield"
  yield "ACTION2" 
  logger.info "ACTION2 after yield"
end       
end

==== Results (in log file):

ACTION1 before yield
ACTION2 before yield
code block before action
ACTION
Rendering home/index
code block after action
ACTION2 after yield
ACTION1 after yield 

around_filter code example

mutru · Jul 4, 20082 thanks

This is how it's used:

around_filter do |controller, action|
do_your(:stuff) do
  action.call
end
end