【发布时间】:2014-07-05 03:26:12
【问题描述】:
我的 Rails 应用程序中有一个单例商店,其中包含一些资产。可以这样访问:
Synchronizer.instance
由于某些原因,我的项目中没有任何数据库服务,除了 Resque 发挥其魔力的 Redis 实例。
我想像这样从 Resque 工作人员那里访问资产:
Synchronizer.instance.asset(id)
因为工作线程在不同的线程中,我检索到的 Synchronizer 实例与 Rails 环境的实例不同。
Rails:
Synchronizer:0x007feb5c389a10
Resque:
Synchronizer:0x00000008566f00
首先它会扼杀使用 Singleton 的兴趣。我可以将有关资产的信息作为哈希传递给工作人员,但是还有其他方法可以访问正确的单例实例吗?
【问题讨论】:
-
您不能从另一个进程访问对象。将资产信息存储在 Redis 中是一种选择。
标签: ruby-on-rails ruby multithreading singleton resque