在 Ruby 中设置 cookie 过期时间
Set cookie expiration time in Ruby
我正在使用 Ruby 和 Sinatra 开发 Web 应用程序。
我有 Ruby 版本 2.3.0,Sinatra 5.0.30
根据 Rails cookies, set start date and expire date 的建议,我尝试了这个:
@language = 'en-US'
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 1.hour.from_now, :domain => '.example.com')
起初我认为它有效,因为除了过期时间之外的cookie设置仍然只是针对会话。我的 Apache 错误日志中的错误是这样说的:
NoMethodError - undefined method 'hour' for 1:Fixnum:
请注意:其中 none 个解决了问题(none 个可以被编译器正确找到)
require 'active_support'
require 'active_support/all'
require 'activesupport'
所以,我尝试了这个:
@language = 'en-US'
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 30, :domain => '.example.com')
只是为了看看会发生什么,没有任何改变,它仍然只在会话中过期。
我应该如何使用 Sinatra 在 Ruby 中为我的 cookie 设置过期时间?
Sinatra 没有 ActiveSupport
库来提供数字到时间的帮助程序,因此 1.hour.from_now
在这里不起作用。
你应该使用这个:
class SinatraApp < Sinatra::Base
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'foo.com',
:path => '/',
:expire_after => 2592000, # In seconds
:secret => 'some_secret'
并以秒为单位设置时间。因为 Sinatra 会话来自 Rack::Session
.
我正在使用 Ruby 和 Sinatra 开发 Web 应用程序。 我有 Ruby 版本 2.3.0,Sinatra 5.0.30
根据 Rails cookies, set start date and expire date 的建议,我尝试了这个:
@language = 'en-US'
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 1.hour.from_now, :domain => '.example.com')
起初我认为它有效,因为除了过期时间之外的cookie设置仍然只是针对会话。我的 Apache 错误日志中的错误是这样说的:
NoMethodError - undefined method 'hour' for 1:Fixnum:
请注意:其中 none 个解决了问题(none 个可以被编译器正确找到)
require 'active_support'
require 'active_support/all'
require 'activesupport'
所以,我尝试了这个:
@language = 'en-US'
response.set_cookie(:USER_LANGUAGE, :value => @language, :expires => 30, :domain => '.example.com')
只是为了看看会发生什么,没有任何改变,它仍然只在会话中过期。
我应该如何使用 Sinatra 在 Ruby 中为我的 cookie 设置过期时间?
Sinatra 没有 ActiveSupport
库来提供数字到时间的帮助程序,因此 1.hour.from_now
在这里不起作用。
你应该使用这个:
class SinatraApp < Sinatra::Base
use Rack::Session::Cookie, :key => 'rack.session',
:domain => 'foo.com',
:path => '/',
:expire_after => 2592000, # In seconds
:secret => 'some_secret'
并以秒为单位设置时间。因为 Sinatra 会话来自 Rack::Session
.