From 28a1a39967ada924179d080b9cd69b3c90f44e4a Mon Sep 17 00:00:00 2001 From: Jeremy Daer <jeremydaer@gmail.com> Date: Thu, 1 Oct 2015 20:42:52 -0700 Subject: Response#add_header for adding to multi-valued headers like Vary --- actionpack/lib/action_dispatch/http/response.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'actionpack/lib') diff --git a/actionpack/lib/action_dispatch/http/response.rb b/actionpack/lib/action_dispatch/http/response.rb index 85d9c3be00..f6f63f1f32 100644 --- a/actionpack/lib/action_dispatch/http/response.rb +++ b/actionpack/lib/action_dispatch/http/response.rb @@ -161,6 +161,26 @@ module ActionDispatch # :nodoc: def set_header(key, v); headers[key] = v; end def delete_header(key); headers.delete key; end + # Add a header that may have multiple values. + # + # Example: + # response.add_header 'Vary', 'Accept' + # response.add_header 'Vary', 'Accept-Encoding' + # response.add_header 'Vary', 'Cookie' + # + # assert_equal 'Accept,Accept-Encoding,Cookie', response.get_header 'Vary' + # + # http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 + def add_header(key, v) + if v.nil? + get_header key + elsif have_header? key + set_header key, "#{get_header key},#{v}" + else + set_header key, v + end + end + def await_commit synchronize do @cv.wait_until { @committed } -- cgit v1.2.3