class ActiveSupport::Callbacks::CallbackChain
:nodoc:#
An Array with a compile method
def compile(key=nil, object=nil)
def compile(key=nil, object=nil) method = [] method << "value = nil" method << "halted = false" each do |callback| method << callback.start(key, object) end if config[:rescuable] method << "rescued_error = nil" method << "begin" end method << "value = yield if block_given? && !halted" if config[:rescuable] method << "rescue Exception => e" method << "rescued_error = e" method << "end" end reverse_each do |callback| method << callback.end(key, object) end method << "raise rescued_error if rescued_error" if config[:rescuable] method << "halted ? false : (block_given? ? value : true)" method.compact.join("\n") end
def initialize(name, config)
def initialize(name, config) @name = name @config = { :terminator => "false", :rescuable => false, :scope => [ :kind ] }.merge(config) end