Class: CGI::Cookie
- Defined in:
- lib/action_controller/cgi_ext/cookie_performance_fix.rb
Overview
This is a cookie class that fixes the performance problems with the default one that ships with 1.8.1 and below. It replaces the inheritance on SimpleDelegator with DelegateClass(Array) following the suggestion from Matz on groups.google.com/groups?th=e3a4e68ba042f842&seekm=c3sioe%241qvm%241%40news.cybercity.dk#link14
Instance Attribute Summary collapse
-
#domain ⇒ Object
Returns the value of attribute domain.
-
#expires ⇒ Object
Returns the value of attribute expires.
-
#name ⇒ Object
Returns the value of attribute name.
-
#path ⇒ Object
Returns the value of attribute path.
-
#secure ⇒ Object
Returns the value of attribute secure.
-
#value ⇒ Object
Returns the value of attribute value.
Class Method Summary collapse
-
.parse(raw_cookie) ⇒ Object
Parse a raw cookie string into a hash of cookie-name=>Cookie pairs.
Instance Method Summary collapse
- #__setobj__(obj) ⇒ Object
-
#initialize(name = "", *value) ⇒ Cookie
constructor
Create a new CGI::Cookie object.
-
#to_s ⇒ Object
Convert the Cookie to its string representation.
Constructor Details
#initialize(name = "", *value) ⇒ Cookie
Create a new CGI::Cookie object.
The contents of the cookie can be specified as a name
and one or more value
arguments. Alternatively, the contents can be specified as a single hash argument. The possible keywords of this hash are as follows:
- name
-
the name of the cookie. Required.
- value
-
the cookie’s value or list of values.
- path
-
the path for which this cookie applies. Defaults to the base directory of the CGI script.
- domain
-
the domain for which this cookie applies.
- expires
-
the time at which this cookie expires, as a
Time
object. - secure
-
whether this cookie is a secure cookie or not (default to false). Secure cookies are only transmitted to HTTPS servers.
These keywords correspond to attributes of the cookie object.
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 26 def initialize(name = "", *value) = if name.kind_of?(String) { "name" => name, "value" => value } else name end unless .has_key?("name") raise ArgumentError, "`name' required" end @name = ["name"] @value = Array(["value"]) # simple support for IE if ["path"] @path = ["path"] else %r|^(.*/)|.match(ENV["SCRIPT_NAME"]) @path = ($1 or "") end @domain = ["domain"] @expires = ["expires"] @secure = ["secure"] == true ? true : false super(@value) end |
Instance Attribute Details
#domain ⇒ Object
Returns the value of attribute domain.
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def domain @domain end |
#expires ⇒ Object
Returns the value of attribute expires.
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def expires @expires end |
#name ⇒ Object
Returns the value of attribute name.
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def name @name end |
#path ⇒ Object
Returns the value of attribute path.
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def path @path end |
#secure ⇒ Object
Returns the value of attribute secure.
57 58 59 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 57 def secure @secure end |
#value ⇒ Object
Returns the value of attribute value.
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def value @value end |
Class Method Details
.parse(raw_cookie) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 103 def self.parse() = Hash.new([]) return unless .split(/; /).each do |pairs| name, values = pairs.split('=',2) next unless name and values name = CGI::unescape(name) values ||= "" values = values.split('&').collect{|v| CGI::unescape(v) } unless .has_key?(name) [name] = new({ "name" => name, "value" => values }) end end end |
Instance Method Details
#__setobj__(obj) ⇒ Object
52 53 54 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 52 def __setobj__(obj) @_dc_obj = obj end |
#to_s ⇒ Object
Convert the Cookie to its string representation.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 68 def to_s buf = "" buf += @name + '=' if @value.kind_of?(String) buf += CGI::escape(@value) else buf += @value.collect{|v| CGI::escape(v) }.join("&") end if @domain buf += '; domain=' + @domain end if @path buf += '; path=' + @path end if @expires buf += '; expires=' + CGI::rfc1123_date(@expires) end if @secure == true buf += '; secure' end buf end |