Module: Hooks::ClassMethods
- Defined in:
- lib/hooks.rb
Instance Method Summary collapse
-
#callbacks_for_hook(name) ⇒ Object
Returns the callbacks for
name. - #define_hooks(*names) ⇒ Object (also: #define_hook)
-
#run_hook(name, *args) ⇒ Object
Like Hooks#run_hook but for the class.
- #run_hook_for(name, scope, *args) ⇒ Object
Instance Method Details
#callbacks_for_hook(name) ⇒ Object
Returns the callbacks for name. Handy if you want to run the callbacks yourself, say when they should be executed in another context.
Example:
def initialize
self.class.callbacks_for_hook(:after_eight).each do |callback|
instance_exec(self, &callback)
end
would run callbacks in the object instance context, passing self as block parameter.
69 70 71 |
# File 'lib/hooks.rb', line 69 def callbacks_for_hook(name) _hooks[name] end |
#define_hooks(*names) ⇒ Object Also known as: define_hook
31 32 33 34 35 36 37 |
# File 'lib/hooks.rb', line 31 def define_hooks(*names) = (names) names.each do |name| setup_hook(name, ) end end |
#run_hook(name, *args) ⇒ Object
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.
50 51 52 |
# File 'lib/hooks.rb', line 50 def run_hook(name, *args) run_hook_for(name, self, *args) end |
#run_hook_for(name, scope, *args) ⇒ Object
54 55 56 |
# File 'lib/hooks.rb', line 54 def run_hook_for(name, scope, *args) _hooks[name].run(scope, *args) end |