【问题标题】:how to send request in rails console with session?如何在带有会话的 Rails 控制台中发送请求?
【发布时间】:2011-12-29 04:27:45
【问题描述】:
我知道我可以使用 app.get 和 app.post 在 Rails 控制台中测试控制器。
但是如何设置session?我发现有app.session,但它似乎没有保留它的状态。
$ app.session[:a] = "123"
$ app.get "/"
$ app.session
=> {}
【问题讨论】:
标签:
ruby-on-rails
ruby
session
controller
【解决方案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
【解决方案2】:
这是一个关于它的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 放置在会话中