Module: EventHooks::ClassMethods

Defined in:
lib/event_hooks/event_hooks.rb

Instance Method Summary collapse

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