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
