Module: EventHooks::ClassMethods
- Defined in:
- lib/event_hooks/event_hooks.rb
Instance Method Summary collapse
- #hook_after(event, hook) ⇒ Object
-
#inherited(klass) ⇒ Object
make sure hook_after method must be injected in subclasses.
Instance Method Details
#hook_after(event, hook) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/event_hooks/event_hooks.rb', line 32 def hook_after(event, hook) raise EventHooks::DoubleHook.new if instance_methods.include?("#{event}_without_after_hook".to_sym) alias_method "#{event}_without_after_hook".to_sym, event define_method "#{event}_with_after_hook".to_sym do |*args| ActiveRecord::Base.transaction do res = send("#{event}_without_after_hook".to_sym, *args) unless send(hook) raise ActiveRecord::Rollback, "After_hook #{hook} failed" return false end res end end alias_method event, "#{event}_with_after_hook".to_sym end |
#inherited(klass) ⇒ Object
make sure hook_after method must be injected in subclasses
27 28 29 30 |
# File 'lib/event_hooks/event_hooks.rb', line 27 def inherited(klass) klass.send(:extend, EventHooks::ClassMethods) super end |