为什么我们要避免在rails中使用类变量@@?这有什么安全漏洞吗?请回答,因为我是新的rails。我正在使用实例变量@variable_name
。我试了一次@@variable_name
。
我只知道类变量是,类变量在对象
之间是可共享的但我真的想知道我们为什么要避免在轨道中使用类变量@@
答案 0 :(得分:46)
仅仅因为它们不是线程安全的。许多rails =有能力的服务器是多线程的。这意味着在任何给定时间可能有多个运行的应用程序实例,并且您的一个用户的任何请求将被任意分配给其中一个。类变量不在进程之间共享,因此在后续请求中您的类变量可能会有所不同。
即使您故意设法在单线程服务器上运行您的应用程序,也无法保证您的应用程序不会在请求之间重新启动,从而丢失您的类变量。
如果您想要类似于类变量提供的功能,我强烈建议您查看键值存储,例如Memcached或Redis。