我知道对Rails应用程序的每个请求都会为请求实例化一个新控制器,因此控制器本身是线程安全的。
因此,如果我向/users
发出请求,例如UsersController
将是一个新实例。
但是,UsersController
继承自ApplicationController
,我的ApplicationController
就是这样:
class ApplicationController < ActionController::Base
before_action :authenticate_user!
def authenticate_user!
# example
end
include CurrentUserHelper
end
这是我的CurrentUserHelper:
module CurrentUserHelper
def current_user
return @current_user if @current_user
@current_user = #logic to set current user
end
class UserNotFound < StandardError
end
end
由于我在CurrentUserHelper
中使用了一个实例变量,我不确定它是否是线程安全的,因为我不知道它是否是每个请求的模块的新实例。我问,因为我的网络服务器是Puma
,我想要多个线程。