Module: ActiveSupport::Callbacks::CallTemplate

Defined in:
activesupport/lib/active_support/callbacks.rb

Overview

A future invocation of user-supplied code (either as a callback, or a condition filter).

Defined Under Namespace

Classes: InstanceExec0, InstanceExec1, InstanceExec2, MethodCall, ObjectCall, ProcCall

Class Method Summary collapse

Class Method Details

.build(filter, callback) ⇒ Object

Filters support:

Symbols:: A method to call.
Procs::   A proc to call with the object.
Objects:: An object with a <tt>before_foo</tt> method on it to call.

All of these objects are converted into a CallTemplate and handled the same after this point.


533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
# File 'activesupport/lib/active_support/callbacks.rb', line 533

def self.build(filter, callback)
  case filter
  when Symbol
    MethodCall.new(filter)
  when Conditionals::Value
    ProcCall.new(filter)
  when ::Proc
    if filter.arity > 1
      InstanceExec2.new(filter)
    elsif filter.arity > 0
      InstanceExec1.new(filter)
    else
      InstanceExec0.new(filter)
    end
  else
    ObjectCall.new(filter, callback.current_scopes.join("_").to_sym)
  end
end