From abc6dd47ede5b96ada1ff8f37dfba73cd5fd586a Mon Sep 17 00:00:00 2001 From: Ben Somers Date: Thu, 17 May 2012 18:46:58 -0700 Subject: Add method_missing to Raindrops::Middleware::Proxy This enables it to behave more like a Rack BodyProxy would, delegating methods to its body object when it does not implement them itself. (Also includes a minor grammar fix to a comment.) [ew: minor comment/whitespace fix] Signed-off-by: Eric Wong --- lib/raindrops/middleware/proxy.rb | 11 +++++++++-- test/test_middleware.rb | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/lib/raindrops/middleware/proxy.rb b/lib/raindrops/middleware/proxy.rb index 53e14b5..51be3eb 100644 --- a/lib/raindrops/middleware/proxy.rb +++ b/lib/raindrops/middleware/proxy.rb @@ -1,7 +1,7 @@ # -*- encoding: binary -*- # :stopdoc: -# This class is by Raindrops::Middleware to proxy application response -# bodies. There should be no need to use it directly. +# This class is used by Raindrops::Middleware to proxy application +# response bodies. There should be no need to use it directly. class Raindrops::Middleware::Proxy def initialize(body, stats) @body, @stats = body, stats @@ -31,4 +31,11 @@ class Raindrops::Middleware::Proxy m = m.to_sym :close == m || @body.respond_to?(m) end + + # Rack::BodyProxy objects use +method_missing+ to delegate methods + # to their bodies + def method_missing(*args, &block) + @body.send(*args, &block) + end + end diff --git a/test/test_middleware.rb b/test/test_middleware.rb index eedf04a..56ce346 100644 --- a/test/test_middleware.rb +++ b/test/test_middleware.rb @@ -120,5 +120,9 @@ class TestMiddleware < Test::Unit::TestCase def orig_body.to_path; "/dev/null"; end assert body.respond_to?(:to_path) assert_equal "/dev/null", body.to_path + + def orig_body.body; "this is a body"; end + assert body.respond_to?(:body) + assert_equal "this is a body", body.body end end -- cgit v1.2.3-24-ge0c7