如何使用会话在rails控制台中发送请求?

时间:2011-11-15 03:21:06

标签: ruby-on-rails ruby session controller

我知道我可以使用app.getapp.post在Rails控制台中测试控制器。

但是如何设置session?我发现有app.session,但似乎没有保留其状态。

   $ app.session[:a] = "123"
   $ app.get "/"
   $ app.session
   => {}

2 个答案:

答案 0 :(得分:1)

如果您正在使用RedisStore进行Rails会话,则可以使用以下方便的方法检索会话,并给出会话ID

def get_session(sid)
  store = ActionDispatch::Session::RedisStore.new(
      Rails.application,
      Rails.application.config.session_options)
  store.get_session({}, sid)
end

答案 1 :(得分:0)

这是关于它的blog post。从我的猜测来看,人们通常不会这样做是多么乏味。

  

查看tmp / sessions并找到最新文件(UNIX上为ls -alrt)。   假设该文件名为tmp/sessions/ruby_sess.8eb9614a7e4e1e3b   打开控制台并输入:

>> session = Marshal.load(File.open('tmp/sessions/ruby_sess.8eb9614a7e4e1e3b'))
=> {"hash"=>{:cart=...
>> cart = session["hash"][:cart]
.... 
     

在这种情况下,我试图访问会话中的购物车对象,该对象已放置在session[:cart] = Cart.new

的会话中