Ruby 使用Rack::Session::Pool进行会话的Sinatra
Sinatra使用Ruby 使用Rack::Session::Pool进行会话的Sinatra,ruby,rest,session,sinatra,rack,Ruby,Rest,Session,Sinatra,Rack,Sinatra使用Rack::Session::Pool存储会话信息时遇到问题。 我想做的是通过使用'post/dataset'将信息附加到会话散列来“发布”一些数据,然后通过使用'GET/dataset'并返回“会话”散列的内容来检索它。但是,当我尝试返回值时,“session”散列不包含:message键 require 'sinatra/base' class Trial < Sinatra::Base use Rack::Session::Pool post '/dat
Rack::Session::Pool
存储会话信息时遇到问题。
我想做的是通过使用'post/dataset'
将信息附加到会话散列来“发布”一些数据,然后通过使用'GET/dataset'
并返回“会话”散列的内容来检索它。但是,当我尝试返回值时,“session”散列不包含:message键
require 'sinatra/base'
class Trial < Sinatra::Base
use Rack::Session::Pool
post '/dataset' do
session[:message] = params[:data]
end
get '/dataset' do
session[:message]
end
end
Trial.run!
需要'sinatra/base'
类试验
我知道这看起来很琐碎,但我还是不能让它工作…试着去做
enable :sessions
有关配置的详细信息。即使您使用的是
机架::会话::池
而不是默认的基于cookie的会话存储,您仍然需要在请求中使用cookie。会话数据存储在服务器的内存中,但会话id需要与cookie中的每个请求一起传递
response1 = RestClient.post 'localhost:4567/dataset', {:data => '123'}
response2 = RestClient.get 'localhost:4567/dataset', :cookies => response1.cookies
puts response2 #=> 123
谢谢,但这实际上是指饼干。我仍然无法解决上面的例子…你是否在请求之间使用类似于重新加载应用程序的东西?不,普通的老Sinatra你是如何测试的?当我运行它时,它工作正常。我使用的rest_客户端如下所示:RestClient.post“”,{:data=>[1,2,3]},然后:response=RestClient.get“”,但是response对象是空的。如果有必要的话,我使用的是Sinatra 1.3.5。非常感谢你的帮助!非常感谢你,马特!