module ExtendIt::Callbacks::ClassMethods
Public Instance Methods
define_callbacks(*names, callbacks: [:before, :after])
click to toggle source
# File lib/extend_it/callbacks.rb, line 81 def define_callbacks(*names, callbacks: [:before, :after]) callbacks = [:before, :after] unless callbacks.is_a?(Array) callbacks = callbacks.ensure_array(values: CALLBACKS) names = names.ensure_array(:flatten, :ensure_symbol, :compact, :uniq) names.each do |name| callbacks.each do |cb| cb_name = "#{cb}_#{name}".to_sym var_name = "@#{cb_name}".to_sym define_singleton_method cb_name do |&block| return if block.nil? arr = if instance_variable_defined?(var_name) instance_variable_get(var_name) else instance_variable_set(var_name, []) end arr << block end end end end