Commit 9ae57cc

mo khan <mo@mokhan.ca>
2013-03-24 04:25:05
hookup the unit of work interceptor
1 parent e3c3652
Changed files (2)
invocation.rb
@@ -1,6 +1,6 @@
 module Booty
   class Invocation
-    attr_reader :instance, :method, :arguments
+    attr_reader :instance, :method, :arguments, :result
 
     def initialize(instance, method, args, block)
       @instance = instance
@@ -10,10 +10,11 @@ module Booty
     end
 
     def proceed
+        p "PROCEED #{@instance} #{@method} #{@arguments} #{@block}"
       if @block
-        instance.public_send(@method, @arguments, @block)
+        @result = @instance.public_send(@method, @arguments, @block)
       else
-        instance.public_send(@method, @arguments)
+        @result = @instance.public_send(@method, @arguments)
       end
     end
   end
proxy.rb
@@ -7,9 +7,20 @@ module Booty
     end
 
     def add_interceptor(method, interceptor)
-      self.class.define_method(method.to_sym) do |*args, &block|
-        interceptor.intercept(create_invocation_for(method, args, block))
+      #self.class.define_method(method.to_sym) do |*args, &block|
+        #interceptor.intercept(create_invocation_for(method, args, block))
+      #end
+
+      mod = Module.new do
+        define_method(method.to_sym) do |*args, &block|
+          p "CALLING #{method}"
+          invocation = create_invocation_for(method, args, block)
+          interceptor.intercept(invocation)
+          invocation.result
+        end
       end
+      self.extend(mod)
+      self
     end
 
     def create_invocation_for(method, args, block)