Camping's cookie support only allows you to set the name and value of an outgoing cookie by assigning to the @cookies hash. If you want more control over your cookies, you can add a service override that does something like this:

module Camping::CookieWrapper
  def service(*a)
    @cgi_cookies    = Camping::H.new
    @default_cookie = Camping::H.new.merge({ :path => '/' })
    response = super(*a)
    @cgi_cookies.each do |name, settings|
      c = @default_cookie.merge(settings);
      c.name = name
      cookie = CGI::Cookie.new(c);
      headers['Set-Cookie'].push(cookie.to_s)
    end
    response
  end
end

Now your controllers have access to the @cgi_cookies hash. Its keys are cookie names, and its values are hashes that are used to instantiate CGI::Cookie objects.

Example

  @cgi_cookies['monster'] = {
    :value   => 'blue',
    :expires => Time.now + 7.days,
    :secure  => true
  }

See Also


Return to CampingRulesOfThumb