module Hooks
Almost like ActiveSupport::Callbacks but 76,6% less complex.
Example:
class CatWidget < Apotomo::Widget define_hooks :before_dinner, :after_dinner
Now you can add callbacks to your hook declaratively in your class.
before_dinner :wash_paws after_dinner { puts "Ice cream!" } after_dinner :have_a_desert # => refers to CatWidget#have_a_desert
Running the callbacks happens on instances. It will run the block and have_a_desert from above.
cat.run_hook :after_dinner
Constants
- InheritableAttribute
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/hooks.rb, line 21 def self.included(base) base.class_eval do extend Uber::InheritableAttr extend ClassMethods inheritable_attr :_hooks self._hooks= HookSet.new end end
Public Instance Methods
run_hook(name, *args)
click to toggle source
Runs the callbacks (method/block) for the specified hook name.
Additional arguments will be passed to the callback.
Example:
cat.run_hook :after_dinner, "i want ice cream!"
will invoke the callbacks like
desert("i want ice cream!") block.call("i want ice cream!")
# File lib/hooks.rb, line 114 def run_hook(name, *args) self.class.run_hook_for(name, self, *args) end