module CallbackHelpers
Public Instance Methods
after(action_name, wrap_in_action: false, &action)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 2 def after(action_name, wrap_in_action: false, &action) ensure_callbacks_variables_for_action(action_name) if get(:executed_actions).include?(action_name) instance_exec(&wrap_action(action, wrap_in_action)) else add_callback(action_name, :after, wrap_action(action, wrap_in_action)) end end
before(action_name, wrap_in_action: false, &action)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 12 def before(action_name, wrap_in_action: false, &action) ensure_callbacks_variables_for_action(action_name) add_callback(action_name, :before, wrap_action(action, wrap_in_action)) end
run_action(action_name, &action)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 17 def run_action(action_name, &action) ensure_callbacks_variables_for_action(action_name) callbacks = get(:callbacks)[action_name] callbacks[:before].each { |callback| instance_exec(&callback) } instance_exec(&action) get(:executed_actions) << action_name callbacks[:after].each { |callback| instance_exec(&callback) } end
Private Instance Methods
add_callback(action_name, type, action)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 29 def add_callback(action_name, type, action) get(:callbacks)[action_name][type] << action end
ensure_callbacks_variables_for_action(action_name)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 38 def ensure_callbacks_variables_for_action(action_name) ensure_variable(:callbacks, {}) ensure_variable(:executed_actions, []) get(:callbacks)[action_name] ||= { before: [], after: [] } end
wrap_action(action, wrap_in_action)
click to toggle source
# File lib/potassium/helpers/callback-helpers.rb, line 33 def wrap_action(action, wrap_in_action) return action unless wrap_in_action -> { run_action(wrap_in_action, &action) } end