Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用Rack::Session::Pool进行会话的Sinatra_Ruby_Rest_Session_Sinatra_Rack - Fatal编程技术网

Ruby 使用Rack::Session::Pool进行会话的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

Sinatra使用
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。非常感谢你的帮助!非常感谢你,马特!