lib/rack/response.rb in rack-0.2.0 vs lib/rack/response.rb in rack-0.3.0

- old
+ new

@@ -53,12 +53,14 @@ def set_cookie(key, value) case value when Hash domain = "; domain=" + value[:domain] if value[:domain] path = "; path=" + value[:path] if value[:path] + # According to RFC 2109, we need dashes here. + # N.B.: cgi.rb uses spaces... expires = "; expires=" + value[:expires].clone.gmtime. - strftime("%a, %d %b %Y %H:%M:%S GMT") if value[:expires] + strftime("%a, %d-%b-%Y %H:%M:%S GMT") if value[:expires] value = value[:value] end value = [value] unless Array === value cookie = Utils.escape(key) + "=" + value.map { |v| Utils.escape v }.join("&") + @@ -74,11 +76,11 @@ end end def delete_cookie(key, value={}) unless Array === self["Set-Cookie"] - self["Set-Cookie"] = [self["Set-Cookie"]] + self["Set-Cookie"] = [self["Set-Cookie"]].compact end self["Set-Cookie"].reject! { |cookie| cookie =~ /\A#{Utils.escape(key)}=/ } @@ -90,11 +92,11 @@ def finish(&block) @block = block - if [201, 204, 304].include?(status.to_i) + if [204, 304].include?(status.to_i) header.delete "Content-Type" [status.to_i, header.to_hash, []] else [status.to_i, header.to_hash, self] end @@ -108,9 +110,13 @@ end def write(str) @writer.call str.to_s str + end + + def close + body.close if body.respond_to?(:close) end def empty? @block == nil && @body.empty? end