123456789_123456789_123456789_123456789_123456789_

Module: AbstractController::Callbacks::ClassMethods

Relationships & Source Files
Defined in: actionpack/lib/abstract_controller/callbacks.rb

Instance Method Summary

Instance Method Details

#_insert_callbacks(callbacks, block = nil)

Take callback names and an optional callback proc, normalize them, then call the block with each callback. This allows us to abstract the normalization across several methods that use it.

#### Parameters

  • callbacks - An array of callbacks, with an optional options hash as the last parameter.

  • block - A proc that should be added to the callbacks.

#### Block Parameters

  • name - The callback to be added.

  • options - A hash of options to be used when adding the callback.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 120

def _insert_callbacks(callbacks, block = nil)
  options = callbacks.extract_options!
  callbacks.push(block) if block
  options[:filters] = callbacks
  _normalize_callback_options(options)
  options.delete(:filters)
  callbacks.each do |callback|
    yield callback, options
  end
end

#_normalize_callback_option(options, from, to)

This method is for internal use only.
[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 98

def _normalize_callback_option(options, from, to) # :nodoc:
  if from_value = options.delete(from)
    filters = options[:filters]
    from_value = ActionFilter.new(filters, from, from_value)
    options[to] = Array(options[to]).unshift(from_value)
  end
end

#_normalize_callback_options(options)

If :only or :except are used, convert the options into the :if and :unless options of ::ActiveSupport::Callbacks.

The basic idea is that :only => :index gets converted to ‘:if => proc {|c| c.action_name == “index” }`.

Note that :only has priority over :if in case they are used together.

only: :index, if: -> { true } # the :if option will be ignored.

Note that :if has priority over :except in case they are used together.

except: :index, if: -> { true } # the :except option will be ignored.

#### Options

  • only - The callback should be run only for this action.

  • except - The callback should be run for all actions except this action.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 93

def _normalize_callback_options(options)
  _normalize_callback_option(options, :only, :if)
  _normalize_callback_option(options, :except, :unless)
end

#after_action(names, block)

Append a callback after actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 173

rdoc_method :method: after_action

#append_after_action(names, block)

Append a callback after actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 194

rdoc_method :method: append_after_action

#append_around_action(names, block)

Append a callback around actions. See _insert_callbacks for parameter details. set up before_action, prepend_before_action, skip_before_action, etc. for each of before, after, and around.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 231

rdoc_method :method: append_around_action

#append_before_action(names, block)

Append a callback before actions. See _insert_callbacks for parameter details.

If the callback renders or redirects, the action will not run. If there are additional callbacks scheduled to run after that callback, they are also cancelled.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 162

rdoc_method :method: append_before_action

#around_action(names, block)

Append a callback around actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 201

rdoc_method :method: around_action

#before_action(names, block)

Append a callback before actions. See _insert_callbacks for parameter details.

If the callback renders or redirects, the action will not run. If there are additional callbacks scheduled to run after that callback, they are also cancelled.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 132

rdoc_method :method: before_action

#prepend_after_action(names, block)

Prepend a callback after actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 180

rdoc_method :method: prepend_after_action

#prepend_around_action(names, block)

Prepend a callback around actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 208

rdoc_method :method: prepend_around_action

#prepend_before_action(names, block)

Prepend a callback before actions. See _insert_callbacks for parameter details.

If the callback renders or redirects, the action will not run. If there are additional callbacks scheduled to run after that callback, they are also cancelled.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 143

rdoc_method :method: prepend_before_action

#skip_after_action(names)

Skip a callback after actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 187

rdoc_method :method: skip_after_action

#skip_around_action(names)

Skip a callback around actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 216

rdoc_method :method: skip_around_action

#skip_before_action(names)

Skip a callback before actions. See _insert_callbacks for parameter details.

[ GitHub ]

  
# File 'actionpack/lib/abstract_controller/callbacks.rb', line 155

rdoc_method :method: skip_before_action