【发布时间】:2014-09-20 21:40:31
【问题描述】:
根据this 的回答,它们是,但后来发帖者指出 JRuby 中的工作方式不同,所以我很困惑?
我正在使用类实例变量实现多租户解决方案,因此无论我使用什么 Ruby 实现或 Web 服务器,我都需要确保数据不会泄露。
这是我的代码:
class Tenant < ActiveRecord::Base
def self.current_tenant=(tenant)
@tenant = tenant
end
def self.current_tenant
@tenant
end
end
我需要做些什么来确保无论发生什么(更改 Ruby 实现、更改 Web 服务器、新的 Ruby 线程功能等)我的代码都是线程安全的?
【问题讨论】:
-
租期是机器的属性吗?会议?请求?
-
租户是在url中设置的,所以是请求的一个属性
-
因此将其设置为 class 变量是没有意义的——它会影响整个系统(或确切地说是进程)——而不仅仅是请求
-
所以一旦 Rails 加载完毕,所有请求都会设置相同的实例变量(与内存位置相同)
标签: ruby-on-rails ruby