Commit c1ad536
Changed files (2)
invocation.rb
@@ -2,14 +2,19 @@ module Booty
class Invocation
attr_reader :instance, :method, :arguments
- def initialize(instance, method, args)
+ def initialize(instance, method, args, block)
@instance = instance
@method = method
@arguments = args
+ @block = block
end
def proceed
- instance.public_send(@method, @arguments)
+ if @block
+ instance.public_send(@method, @arguments, @block)
+ else
+ instance.public_send(@method, @arguments)
+ end
end
end
end
proxy.rb
@@ -7,13 +7,13 @@ module Booty
end
def add_interceptor(method, interceptor)
- self.class.define_method(method.to_sym) do |*args|
- interceptor.intercept(create_invocation_for(method, args))
+ self.class.define_method(method.to_sym) do |*args, &block|
+ interceptor.intercept(create_invocation_for(method, args, block))
end
end
- def create_invocation_for(method, args)
- Invocation.new(@target, method, args)
+ def create_invocation_for(method, args, block)
+ Invocation.new(@target, method, args, block)
end
def method_missing(method, *args, &block)