我正在尝试产生一个这样的过程
# name I get from network (I'm using webrick)
Process.spawn(name)
不管我最后得到了什么
ArgumentError: wrong first argument
但有点奇怪。当我在Process.spawn
调用之前使用binding.pry
中断时,得到的结果如下:
> name
=> "notepad.exe"
> name == "notepad.exe"
=> true
> Process.spawn(name)
ArgumentError: wrong first argument
from (pry):23: in `spawn`
> Process.spawn("notepad.exe")
=> 728
> Process.spawn(name.to_s)
=> 1416
所以我只是验证了name
等于"notepad.exe"
,并且当用name
调用时Process.spawn
失败,当用"notepad.exe"
调用时成功。它在使用name.to_s
调用时也可以工作。谁能告诉我这是怎么回事?name
和"notepad.exe"
都有UTF-8
编码(通过name.encoding
验证),name
和name.to_s
都不是tainted?
。
我看了源代码,但不知道发生了什么。
1条答案
按热度按时间eanckbw91#
问题是
WEBrick::HTTPUtils::FormData
定义了#to_ary
。所以我用name.to_s
来解决这个问题。