Class: ActionDispatch::Cookies::CookieJar
- Inherits:
 - 
      Object
      
        
- Object
 - ActionDispatch::Cookies::CookieJar
 
 
- Includes:
 - ChainedCookieJars, Enumerable
 
- Defined in:
 - lib/action_dispatch/middleware/cookies.rb
 
Overview
:nodoc:
Direct Known Subclasses
ActionController::RequestForgeryProtection::ProtectionMethods::NullSession::NullCookieJar
Instance Attribute Summary collapse
- 
  
    
      #request  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute request.
 
Class Method Summary collapse
Instance Method Summary collapse
- 
  
    
      #[](name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns the value of the cookie by
name, ornilif no such cookie exists. - 
  
    
      #[]=(name, options)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Sets the cookie named
name. - 
  
    
      #clear(options = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Removes all cookies on the client machine by calling
deletefor each cookie. - #commit! ⇒ Object
 - #committed? ⇒ Boolean
 - 
  
    
      #delete(name, options = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Removes the cookie on the client machine by setting the value to an empty string and the expiration date in the past.
 - 
  
    
      #deleted?(name, options = {})  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
Whether the given cookie is to be deleted by this CookieJar.
 - #each(&block) ⇒ Object
 - #fetch(name, *args, &block) ⇒ Object
 - 
  
    
      #initialize(request)  ⇒ CookieJar 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of CookieJar.
 - #key?(name) ⇒ Boolean (also: #has_key?)
 - #to_header ⇒ Object
 - #update(other_hash) ⇒ Object
 - #update_cookies_from_jar ⇒ Object
 - #write(response) ⇒ Object
 
Methods included from ChainedCookieJars
#encrypted, #permanent, #signed, #signed_or_encrypted
Constructor Details
#initialize(request) ⇒ CookieJar
Returns a new instance of CookieJar.
      307 308 309 310 311 312 313  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 307 def initialize(request) @set_cookies = {} @delete_cookies = {} @request = request @cookies = {} @committed = false end  | 
  
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request.
      305 306 307  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 305 def request @request end  | 
  
Class Method Details
.build(req, cookies) ⇒ Object
      299 300 301 302 303  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 299 def self.build(req, ) jar = new(req) jar.update() jar end  | 
  
Instance Method Details
#[](name) ⇒ Object
Returns the value of the cookie by name, or nil if no such cookie exists.
      328 329 330  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 328 def [](name) @cookies[name.to_s] end  | 
  
#[]=(name, options) ⇒ Object
Sets the cookie named name. The second argument may be the cookie’s value or a hash of options as documented above.
      362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 362 def []=(name, ) if .is_a?(Hash) .symbolize_keys! value = [:value] else value = = { value: value } end () if @cookies[name.to_s] != value || [:expires] @cookies[name.to_s] = value @set_cookies[name.to_s] = @delete_cookies.delete(name.to_s) end value end  | 
  
#clear(options = {}) ⇒ Object
Removes all cookies on the client machine by calling delete for each cookie.
      408 409 410  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 408 def clear( = {}) @cookies.each_key { |k| delete(k, ) } end  | 
  
#commit! ⇒ Object
      317 318 319 320 321  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 317 def commit! @committed = true @set_cookies.freeze @delete_cookies.freeze end  | 
  
#committed? ⇒ Boolean
      315  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 315 def committed?; @committed; end  | 
  
#delete(name, options = {}) ⇒ Object
Removes the cookie on the client machine by setting the value to an empty string and the expiration date in the past. Like []=, you can pass in an options hash to delete cookies with extra data such as a :path.
Returns the value of the cookie, or nil if the cookie does not exist.
      387 388 389 390 391 392 393 394 395 396  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 387 def delete(name, = {}) return unless @cookies.has_key? name.to_s .symbolize_keys! () value = @cookies.delete(name.to_s) @delete_cookies[name.to_s] = value end  | 
  
#deleted?(name, options = {}) ⇒ Boolean
Whether the given cookie is to be deleted by this CookieJar. Like []=, you can pass in an options hash to test if a deletion applies to a specific :path, :domain etc.
      401 402 403 404 405  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 401 def deleted?(name, = {}) .symbolize_keys! () @delete_cookies[name.to_s] == end  | 
  
#each(&block) ⇒ Object
      323 324 325  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 323 def each(&block) @cookies.each(&block) end  | 
  
#fetch(name, *args, &block) ⇒ Object
      332 333 334  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 332 def fetch(name, *args, &block) @cookies.fetch(name.to_s, *args, &block) end  | 
  
#key?(name) ⇒ Boolean Also known as: has_key?
      336 337 338  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 336 def key?(name) @cookies.key?(name.to_s) end  | 
  
#to_header ⇒ Object
      356 357 358  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 356 def to_header @cookies.map { |k, v| "#{escape(k)}=#{escape(v)}" }.join "; " end  | 
  
#update(other_hash) ⇒ Object
      344 345 346 347  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 344 def update(other_hash) @cookies.update other_hash.stringify_keys self end  | 
  
#update_cookies_from_jar ⇒ Object
      349 350 351 352 353 354  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 349 def request_jar = @request..instance_variable_get(:@cookies) = request_jar.reject { |k, _| @delete_cookies.key?(k) || @set_cookies.key?(k) } @cookies.update if end  | 
  
#write(response) ⇒ Object
      412 413 414 415 416 417 418 419 420 421 422  | 
    
      # File 'lib/action_dispatch/middleware/cookies.rb', line 412 def write(response) @set_cookies.each do |name, value| if (value) response.(name, value) end end @delete_cookies.each do |name, value| response.(name, value) end end  |