如何从 CGI::Cookie.parse 获取 cookie 值?

How to get cookie value from CGI::Cookie.parse?

如何仅使用 Ruby 2.7 中的标准库获得合理的 cookie 值?根据 docs#value 应该是 return 一个值或一个值列表,但显然不是这样。 c.value returns c

$ docker run --rm -it library/ruby:2.7
require 'cgi'
c = CGI::Cookie.parse('test=foo')['test']
# => #<CGI::Cookie: "test=foo; path=">
p c.value
# => #<CGI::Cookie: "test=foo; path=">
c.equal? c.value
# => true
# Please, what?

预期结果:foo(如果 www 编码像 %66%6f%6f,我想要解码结果 foo)。

CGI::Cookie 的父级 class 是 Array。现在我们可以弄明白了:

>> c = CGI::Cookie.parse('test=%66%6f%6f')['test']
=> #<CGI::Cookie: "test=foo; path=">
>> c.size
=> 1
>> c.first
=> "foo"
>> c[0]
=> "foo"