gpt4 book ai didi

ruby-on-rails - 在 Rails 中,是否会在每个新请求时重置任意类的类属性?

转载 作者:行者123 更新时间:2023-12-04 05:57:45 25 4
gpt4 key购买 nike

假设我的 Rails 应用程序中有一个 Foo 类。

class Foo   
@@bar = "hello"
def self.change
@@bar = "goodbye"
end

def self.get_bar
@@bar
end
end

如果在某个时候,某个用户执行了 Controller 操作,其中包括

Foo.change

在服务器重新启动之前,Foo.get_bar 会在每个用户 session 中返回“再见”吗?

最佳答案

开发环境中,每个请求都会重新加载类,因此您会看到每个请求都会重置类变量。

生产环境中,类不会在每次请求时重新加载,因此通常应该在给定 Ruby 进程中跨请求保留类变量。

请记住,某些 Rails 服务器实际上可能有多个进程,因此您不能保证所有用户和所有请求都将共享类变量。

其他 Rails 服务器可能是多线程的,因此您必须特别注意如何改变共享状态(例如类变量)。

出于这些原因,避免以@andrew21 提到的这种方式使用类变量可能是个好主意。

关于ruby-on-rails - 在 Rails 中,是否会在每个新请求时重置任意类的类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49710878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com