From defda16b834ffc4a78def1c4b6c2299b754fe901 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Fri, 26 Nov 2004 02:09:38 +0000 Subject: [PATCH] Allow symbols to be used as keys for setting cookies git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@21 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- actionpack/lib/action_controller/cookies.rb | 5 +++-- actionpack/test/controller/cookie_test.rb | 10 ++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/actionpack/lib/action_controller/cookies.rb b/actionpack/lib/action_controller/cookies.rb index 78815b7bc4..d56096818d 100644 --- a/actionpack/lib/action_controller/cookies.rb +++ b/actionpack/lib/action_controller/cookies.rb @@ -4,14 +4,14 @@ module ActionController #:nodoc: # itself back -- just the value it holds). Examples for writting: # # cookies["user_name"] = "david" # => Will set a simple session cookie - # cookies["login"] = { "value" => "XJ-122", "expires" => Time.now + 360} # => Will set a cookie that expires in 1 hour + # cookies["login"] = { :value => "XJ-122", :expires => Time.now + 360} # => Will set a cookie that expires in 1 hour # # Examples for reading: # # cookies["user_name"] # => "david" # cookies.size # => 2 # - # All the options for setting cookies are: + # All the option symbols for setting cookies are: # # value:: the cookie's value or list of values (as an array). # path:: the path for which this cookie applies. Defaults to the root of the application. @@ -41,6 +41,7 @@ module ActionController #:nodoc: def []=(name, options) if options.is_a?(Hash) + options.each { |key, value| options[key.to_s] = value } options["name"] = name else options = [ name, options ] diff --git a/actionpack/test/controller/cookie_test.rb b/actionpack/test/controller/cookie_test.rb index 1bd17c5c2f..41dc3393f1 100644 --- a/actionpack/test/controller/cookie_test.rb +++ b/actionpack/test/controller/cookie_test.rb @@ -17,6 +17,11 @@ class CookieTest < Test::Unit::TestCase render_text "hello world" end + def authenticate_for_fourten_days_with_symbols + cookies["user_name"] = { :value => "david", :expires => Time.local(2005, 10, 10) } + render_text "hello world" + end + def set_multiple_cookies cookies["user_name"] = { "value" => "david", "expires" => Time.local(2005, 10, 10) } cookies["login"] = "XJ-122" @@ -52,6 +57,11 @@ class CookieTest < Test::Unit::TestCase assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"] end + def test_setting_cookie_for_fourteen_days_with_symbols + @request.action = "authenticate_for_fourten_days" + assert_equal [ CGI::Cookie::new("name" => "user_name", "value" => "david", "expires" => Time.local(2005, 10, 10)) ], process_request.headers["cookie"] + end + def test_multiple_cookies @request.action = "set_multiple_cookies" assert_equal 2, process_request.headers["cookie"].size