Class: CGI::Cookie
- Inherits:
-
Array
- Object
- Array
- 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 51 52 53 54 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 26 def initialize(name = '', *value) if name.kind_of?(String) @name = name @value = Array(value) @domain = nil @expires = nil @secure = false @path = nil else @name = name['name'] @value = Array(name['value']) @domain = name['domain'] @expires = name['expires'] @secure = name['secure'] || false @path = name['path'] end unless @name raise ArgumentError, "`name' required" end # simple support for IE unless @path %r|^(.*/)|.match(ENV['SCRIPT_NAME']) @path = ($1 or '') end super(@value) end |
Instance Attribute Details
#domain ⇒ Object
Returns the value of attribute domain.
60 61 62 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 60 def domain @domain end |
#expires ⇒ Object
Returns the value of attribute expires.
60 61 62 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 60 def expires @expires end |
#name ⇒ Object
Returns the value of attribute name.
60 61 62 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 60 def name @name end |
#path ⇒ Object
Returns the value of attribute path.
60 61 62 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 60 def path @path end |
#secure ⇒ Object
Returns the value of attribute secure.
61 62 63 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 61 def secure @secure end |
#value ⇒ Object
Returns the value of attribute value.
60 61 62 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 60 def value @value end |
Class Method Details
.parse(raw_cookie) ⇒ Object
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 107 def self.parse() = Hash.new([]) if .split(/; ?/).each do |pairs| name, values = pairs.split('=',2) next unless name and values name = CGI::unescape(name) values = values.split('&').collect!{|v| CGI::unescape(v) } unless .has_key?(name) [name] = new(name, *values) end end end end |
Instance Method Details
#__setobj__(obj) ⇒ Object
56 57 58 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 56 def __setobj__(obj) @_dc_obj = obj end |
#to_s ⇒ Object
Convert the Cookie to its string representation.
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/action_controller/cgi_ext/cookie_performance_fix.rb', line 72 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 |