为什么我们要避免在rails中使用类变量@@?

时间:2012-02-22 14:18:35

标签: ruby-on-rails ruby ruby-on-rails-3

为什么我们要避免在rails中使用类变量@@?这有什么安全漏洞吗?请回答,因为我是新的rails。我正在使用实例变量@variable_name。我试了一次@@variable_name

我只知道类变量是,类变量在对象

之间是可共享的

但我真的想知道我们为什么要避免在轨道中使用类变量@@

1 个答案:

答案 0 :(得分:46)

仅仅因为它们不是线程安全的。许多rails =有能力的服务器是多线程的。这意味着在任何给定时间可能有多个运行的应用程序实例,并且您的一个用户的任何请求将被任意分配给其中一个。类变量不在进程之间共享,因此在后续请求中您的类变量可能会有所不同。

即使您故意设法在单线程服务器上运行您的应用程序,也无法保证您的应用程序不会在请求之间重新启动,从而丢失您的类变量。

如果您想要类似于类变量提供的功能,我强烈建议您查看键值存储,例如Memcached或Redis。