【发布时间】:2014-05-08 08:30:21
【问题描述】:
我有一个用于 Web 应用程序的 Ruby on Rails 服务器。
我想知道 Ruby 中的实例变量是否在不同的请求上共享。这是我的问题:
Bob 向我的 ruby 服务器发出 Get 请求;它首先启动一个实例变量@x,然后它的请求会被处理一段时间。
与此同时,Alice 发出另一个 Get 请求,该请求启动了一个实例变量 @x。 在 Bob 的流程结束时,查看变量 @x。它会具有 Bob 或 Alice 给出的值吗?
如果 Bob 和 Alice 是同一个人,并且连续两次快速发出相同的请求怎么办?第一个请求会在其进程结束时看到第二个请求发起的值吗?
编辑:当config.cache_classes 设置为true 时会发生这种情况,根据我的实验,它与控制器的实例变量无关,但它确实与库有关。这是我所做的。当一个 http 请求到达时,我将一个实例变量@x 设置为一个随机值,并将它保存在一个变量x 中。我睡了一会儿,然后比较@x 和x。当我同时启动多个请求时,有时在进行比较时会发现不同的值。但是,这种不匹配不会发生在控制器中,但会发生在库中。这是否意味着控制器没有兑现但图书馆在config.cache_classes = true时?
【问题讨论】:
标签: ruby-on-rails ruby httprequest multiple-instances