0
我不想在这里复制整个代码,因为它的体积相当大,但这里是它的要点是:不断被覆盖在红宝石/请求西纳特拉
require 'sinatra'
SOME_DATA = get_hashes_from_db
get '/' do
# SOME_DATA's hashes are filtered using .delete
result = process_data SOME_DATA, request
response.body(JSON.generate(result))
end
每个请求,散列的列表进行过滤基于请求中发送的一些参数。 SOME_DATA中有一些字段用于这个过滤器,但是当它们被使用.delete擦除整个密钥时,它们被剥离。例如:
过滤前:
{'condition' => 'rainy', 'data' => 'get an umbrella!'}
过滤后:
{'data' => 'get an umbrella!'}
现在的问题:即使则传递到功能后,进行切割并重新分配了十几次原来不变,称已从原始STILL重新分配的变量上的.delete方法会影响原始数据。根据要求1我会说,10个哈希,每个10个字段。根据要求2我会有10个哈希,但每个有2-5个字段。
我想我有same issue as this guy,但我已经尝试将它传递给.clone希望它可以解决问题,但它没有。
我以前遇到过这个问题,但我不认为我解决过它。即使(在上面的伪代码中)我为什么仍然覆盖原来的SOME_DATA.clone
到process_data
?
我不能重新创建这个问题,我认为你必须提供更多的代码,但是@ zed_0xff的建议是一个很好的建议,因为它有助于追踪发生变化的位置。我还建议[Pry](https://github.com/pry/pry)进入代码并看看它正在运行。 – iain