如何修复Ruby Rack SessionId错误错误:未定义的类/模块Rack::Session::SessionId解码rack.session cookie时

8e2ybdfx  于 2022-11-04  发布在  Ruby
关注(0)|答案(2)|浏览(161)

在编写一个ruby脚本来解码机架会话cookie并使用ruby函数Marshal load加载对象时,我遇到以下错误:
错误:未定义类/模块机架::会话::会话Id
这是我的Ruby脚本:

require 'pp'
require 'base64'
require 'uri'
require 'rack' # solves the error: Error: undefined class/module Rack::

c = gets
cookie, signature = c.split("--")
decoded = Base64.decode64(URI.decode(cookie))
begin
    object = Marshal.load(decoded)
    pp object
rescue ArgumentError => e
    puts "Error: " + e.to_s
end

我如何解决这个问题?我试着寻找解决stackoverflow的方法,但是找不到。

monwx1rj

monwx1rj1#

感谢Louis Nyffenegger (@snyff)帮助我完成了这个https://twitter.com/snyff/status/1407054131697758211?s=20
此错误可以通过创建method stub来解决

require 'pp'
require 'base64'
require 'uri'
require 'rack'

class Rack::Session::SessionId
end

c = gets
cookie, signature = c.split("--")
decoded = Base64.decode64(URI.decode(cookie))
begin
    object = Marshal.load(decoded)
    pp object
rescue ArgumentError => e
    puts "Error: " + e.to_s
end
ql3eal8s

ql3eal8s2#

请尝试清除网站的所有Cookie。
我认为这是可行的,因为在加载Rack::Session::SessionId类时,某些东西导致了异常。
在Rails应用程序中偶尔会发生这种类型的错误。类定义(例如模型中)中的SyntaxError(或任何其他异常)可能会导致未定义的类/模块错误,而不是真实的的错误。

相关问题