Class: ActiveSupport::Callbacks::CallbackChain
Overview
An Array with a compile method
Instance Attribute Summary (collapse)
-
- (Object) config
readonly
:nodoc:#.
-
- (Object) name
readonly
:nodoc:#.
Instance Method Summary (collapse)
- - (Object) compile(key = nil, object = nil)
-
- (CallbackChain) initialize(name, config)
constructor
A new instance of CallbackChain.
Methods inherited from Array
#as_json, #encode_json, #extract_options!, #fifth, #forty_two, #fourth, #from, #in_groups, #in_groups_of, #sample, #second, #split, #third, #to, #to_formatted_s, #to_param, #to_query, #to_sentence, #to_xml, #uniq_by, #uniq_by!, wrap
Constructor Details
- (CallbackChain) initialize(name, config)
A new instance of CallbackChain
329 330 331 332 333 334 335 336 |
# File 'activesupport/lib/active_support/callbacks.rb', line 329 def initialize(name, config) @name = name @config = { :terminator => "false", :rescuable => false, :scope => [ :kind ] }.merge(config) end |
Instance Attribute Details
- (Object) config (readonly)
:nodoc:#
327 328 329 |
# File 'activesupport/lib/active_support/callbacks.rb', line 327 def config @config end |
- (Object) name (readonly)
:nodoc:#
327 328 329 |
# File 'activesupport/lib/active_support/callbacks.rb', line 327 def name @name end |
Instance Method Details
- (Object) compile(key = nil, object = nil)
338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 |
# File 'activesupport/lib/active_support/callbacks.rb', line 338 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 |