我知道我可以使用app.get
和app.post
在Rails控制台中测试控制器。
但是如何设置session
?我发现有app.session
,但似乎没有保留其状态。
$ app.session[:a] = "123"
$ app.get "/"
$ app.session
=> {}
答案 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