module Volt::LifecycleCallbacks::ClassMethods
Public Instance Methods
setup_action_helpers_in_class(*callback_names)
click to toggle source
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.
# 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) options = args.pop else options = nil end args.each do |callback| callbacks << [callback, options] end end end end