From d3c20360f9607a9e04f7d28ce0a796437f733e5f Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 5 Nov 2009 00:49:06 -0800 Subject: Util::tmpio returns a TmpIO that responds to #size Subclass off the core File class so we don't have to worry about #size being defined. This will mainly be useful to Rainbows! but allows us to simplify our TeeInput implementation a little, too. --- lib/unicorn/util.rb | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/unicorn/util.rb') diff --git a/lib/unicorn/util.rb b/lib/unicorn/util.rb index 4bbc590..6444699 100644 --- a/lib/unicorn/util.rb +++ b/lib/unicorn/util.rb @@ -4,6 +4,16 @@ require 'fcntl' require 'tmpdir' module Unicorn + + class TmpIO < ::File + + # for easier env["rack.input"] compatibility + def size + # flush if sync + stat.size + end + end + class Util class << self @@ -47,8 +57,8 @@ module Unicorn # buffering is disabled def tmpio fp = begin - File.open("#{Dir::tmpdir}/#{rand}", - File::RDWR|File::CREAT|File::EXCL, 0600) + TmpIO.open("#{Dir::tmpdir}/#{rand}", + File::RDWR|File::CREAT|File::EXCL, 0600) rescue Errno::EEXIST retry end -- cgit v1.2.3-24-ge0c7