每个Rails请求是否实例化新的Helper模块?

时间:2018-02-19 06:44:56

标签: ruby-on-rails multithreading ruby-on-rails-4 puma actioncontroller

我知道对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,我想要多个线程。

0 个答案:

没有答案