Commit 9ae57cc
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)