Module: Volt::LifecycleCallbacks::ClassMethods
- Defined in:
- lib/volt/utils/lifecycle_callbacks.rb
Instance Method Summary collapse
-
#setup_action_helpers_in_class(*callback_names) ⇒ Object
Takes a list of callbacks (as symbols).
Instance Method Details
#setup_action_helpers_in_class(*callback_names) ⇒ Object
Takes a list of callbacks (as symbols). A callback is typically used for before/after actions, but can be used anytime you have callbacks that may be filtered by action. The method will create an callback method for each callback name passed in.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/volt/utils/lifecycle_callbacks.rb', line 22 def setup_action_helpers_in_class(*callback_names) callback_names.each do |callback_name| # Setup a class attribute to track the callbacks_var_name = :"#{callback_name}_callbacks" class_attribute(callbacks_var_name) # Create the method on the class define_singleton_method(callback_name) do |*args, &block| # Add the block in place of the symbol args.unshift(block) if block fail 'No callback symbol or block provided' unless args[0] callbacks = send(callbacks_var_name) unless callbacks callbacks = [] send(:"#{callbacks_var_name}=", callbacks) end if args.last.is_a?(Hash) = args.pop else = nil end args.each do |callback| callbacks << [callback, ] end end end end |