diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-05-23 06:40:24 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-05-23 06:40:24 +0000 |
commit | e6e7c3a058e38db93330c68ebea9564c753075b6 (patch) | |
tree | c1b34fb6c7da42aab988f2ccea222e45dae2f515 | |
parent | 2499218abf60d1afcf203cf81633e3b61eaa4688 (diff) | |
download | unicorn-e6e7c3a058e38db93330c68ebea9564c753075b6.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@208 19e92222-5c0b-0410-8929-a290d50e31e9
-rw-r--r-- | Rakefile | 4 | ||||
-rw-r--r-- | examples/simpletest.rb | 22 | ||||
-rw-r--r-- | lib/mongrel.rb | 1 | ||||
-rw-r--r-- | lib/mongrel/handlers.rb | 10 |
4 files changed, 17 insertions, 20 deletions
@@ -40,8 +40,8 @@ task :site_rdoc do sh %{ scp -r doc/rdoc/* #{ENV['SSH_USER']}@rubyforge.org:/var/www/gforge-projects/mongrel/rdoc/ } end -task :site_coverage => [:test_units_with_coverage] do - sh %{ scp -r test/coverage/unit/* #{ENV['SSH_USER']}@rubyforge.org:/var/www/gforge-projects/mongrel/coverage/ } +task :site_coverage => [:rcov] do + sh %{ scp -r test/coverage/* #{ENV['SSH_USER']}@rubyforge.org:/var/www/gforge-projects/mongrel/coverage/ } end task :site_projects_rdoc do diff --git a/examples/simpletest.rb b/examples/simpletest.rb index fbad8f4..8ac2e98 100644 --- a/examples/simpletest.rb +++ b/examples/simpletest.rb @@ -1,22 +1,16 @@ +$LOAD_PATH << File.join(File.dirname(__FILE__), "..", "lib") require 'mongrel' require 'yaml' require 'zlib' class SimpleHandler < Mongrel::HttpHandler - def process(request, response) - response.start do |head,out| - head["Content-Type"] = "text/html" - results = "<html><body>Your request:<br /><pre>#{request.params.to_yaml}</pre><a href=\"/files\">View the files.</a></body></html>" - if request.params["HTTP_ACCEPT_ENCODING"] == "gzip,deflate" - head["Content-Encoding"] = "deflate" - # send it back deflated - out << Zlib::Deflate.deflate(results) - else - # no gzip supported, send it back normal - out << results - end - end + def process(request, response) + response.start do |head,out| + head["Content-Type"] = "text/html" + results = "<html><body>Your request:<br /><pre>#{request.params.to_yaml}</pre><a href=\"/files\">View the files.</a></body></html>" + out << results end + end end class DumbHandler < Mongrel::HttpHandler @@ -37,7 +31,9 @@ end config = Mongrel::Configurator.new :host => ARGV[0], :port => ARGV[1] do listener do uri "/", :handler => SimpleHandler.new + uri "/", :handler => Mongrel::DeflateFilter.new uri "/dumb", :handler => DumbHandler.new + uri "/dumb", :handler => Mongrel::DeflateFilter.new uri "/files", :handler => Mongrel::DirHandler.new(ARGV[2]) end diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 599bf2b..9165f0a 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -319,6 +319,7 @@ module Mongrel class HttpResponse attr_reader :socket attr_reader :body + attr_writer :body attr_reader :header attr_reader :status attr_writer :status diff --git a/lib/mongrel/handlers.rb b/lib/mongrel/handlers.rb index 1134bdf..0e34a15 100644 --- a/lib/mongrel/handlers.rb +++ b/lib/mongrel/handlers.rb @@ -269,21 +269,21 @@ module Mongrel # When added to a config script (-S in mongrel_rails) it will # look at the client's allowed response types and then gzip # compress anything that is going out. - class DeflateCompressFilter < HttpHandler + class DeflateFilter < HttpHandler HTTP_ACCEPT_ENCODING = "HTTP_ACCEPT_ENCODING" - def initialize(ops) + def initialize(ops={}) @options = ops end def process(request, response) accepts = request.params[HTTP_ACCEPT_ENCODING] # only process if they support compression - if accepts.include? "gzip" or accepts.include? "deflate" and not response.body_sent - head["Content-Encoding"] = "deflate" + if accepts and (accepts.include? "deflate" and not response.body_sent) + response.header["Content-Encoding"] = "deflate" # we can't just rewind the body and gzip it since the body could be an attached file response.body.rewind - gzout << Zlib::Deflate.deflate(response.body.read) + gzout = StringIO.new(Zlib::Deflate.deflate(response.body.read)) gzout.rewind response.body.close response.body = gzout |