我有一个特殊的问题,我试图在 rails 3 应用程序中解决,我看到的两个常见解决方案是:
Thread.current[:something] = value
和
class Foo
cattr_accessor :bar
end
Foo.bar = value
这些数据存储(以及相应的检索)方法在多个用户同时向我的 Rails 应用程序发出请求时是否安全?
我担心 Thread.current,因为 Web 服务器可以使用单个线程来处理多个请求,对吗?或者在使用 Thread.current 时,rails 处理线程的方式是否存在问题以防止出现问题?我看到Acts As Current使用 Thread.current 来存储当前用户,这给了我希望……但我想要权威的确认。
我还关心生产环境中的类级别属性,因为出于性能原因,我希望 rails 将类对象缓存在内存中。类级别的属性是否在请求中被重用?还是由于rails可以跨请求处理类属性而安全?再次,我想对此进行权威确认。
...这个应用程序使用 Ruby 1.9.2@p180,Rails 3.0.9