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_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