module Light::Services::Callbacks

Attributes

callbacks[RW]

Public Class Methods

included(base) click to toggle source
# File lib/light/services/callbacks.rb, line 6
def self.included(base)
  base.extend ClassMethods
  base.class_eval do
    class << self
      attr_accessor :callbacks
    end
  end
end

Private Instance Methods

all_callbacks() click to toggle source
# File lib/light/services/callbacks.rb, line 28
def all_callbacks
  return @_all_callbacks if defined?(@_all_callbacks)
  @_all_callbacks = self.class.ancestors.select { |klass| klass.ancestors.include?(::Light::Services::Base) }
                        .map(&:callbacks).compact.reverse.flatten.uniq
end
callbacks_by(type) click to toggle source
# File lib/light/services/callbacks.rb, line 24
def callbacks_by(type)
  all_callbacks.select { |callback| callback[:type] == type }
end
run_callbacks(type, options = {}) click to toggle source
# File lib/light/services/callbacks.rb, line 17
def run_callbacks(type, options = {})
  callbacks_by(type).each do |callback|
    break if !success? && !options[:force_run]
    send(callback[:method_name])
  end
end