class Startback::Support::Hooks

Attributes

suffix[R]

Public Class Methods

new(suffix) click to toggle source
# File lib/startback/support/hooks.rb, line 5
def initialize(suffix)
  @suffix = suffix
  define_method :"before_#{suffix}" do
    self.class.__befores.each do |bl|
      instance_exec(&bl)
    end
  end
  define_method :"after_#{suffix}" do
    self.class.__afters.each do |bl|
      instance_exec(&bl)
    end
  end
end

Public Instance Methods

included(by) click to toggle source
# File lib/startback/support/hooks.rb, line 20
def included(by)
  by.instance_eval %Q{
    def __befores(create = false)
      if create
        @__befores ||= (superclass.respond_to?(:__befores, false) ? superclass.__befores.dup : [])
      end
      @__befores || (superclass.respond_to?(:__befores, false) ? superclass.__befores : [])
    end

    def __afters(create = false)
      if create
        @__afters ||= (superclass.respond_to?(:__afters, false) ? superclass.__afters.dup : [])
      end
      @__afters || (superclass.respond_to?(:__afters, false) ? superclass.__afters : [])
    end

    def before_#{suffix}(&bl)
      __befores(true) << bl
    end

    def after_#{suffix}(&bl)
      __afters(true) << bl
    end
  }
end