module Hooks::ClassMethods

Public Instance Methods

callbacks_for_hook(name) click to toggle source

Returns the callbacks for name. Handy if you want to run the callbacks yourself, say when they should be executed in another context.

As callbacks can be static values, lambdas or methods, they're wrapped by Uber::Option::Value which gives you a very convenient way to execute the callback without knowing its type using Value#evaluate.

Example:

def initialize
  self.class.callbacks_for_hook(:after_eight).each do |callback|
    callback.evaluate(self, "create")
  end

Runs callbacks in the object instance context and pass “create” as the only argument.

# File lib/hooks.rb, line 73
def callbacks_for_hook(name)
  _hooks[name]
end
define_hook(*names)
Alias for: define_hooks
define_hooks(*names) click to toggle source
# File lib/hooks.rb, line 31
def define_hooks(*names)
  options = extract_options!(names)

  names.each do |name|
    setup_hook(name, options)
  end
end
Also aliased as: define_hook
run_hook(name, *args) click to toggle source

Like Hooks#run_hook but for the class. Note that :callbacks must be class methods.

Example:

class Cat

after_eight :grab_a_beer

def self.grab_a_beer(*) # and so on...

where Cat.run_hook :after_eight will call the class method grab_a_beer.

# File lib/hooks.rb, line 50
def run_hook(name, *args)
  run_hook_for(name, self, *args)
end
run_hook_for(name, scope, *args) click to toggle source
# File lib/hooks.rb, line 54
def run_hook_for(name, scope, *args)
  _hooks[name].run(scope, *args)
end