我的Rails应用程序中有一个包含一些资产的单件商店。可以这样访问:
Synchronizer.instance
由于某些原因,我的项目中没有任何数据库服务,除了Resis发挥其神奇作用的Redis实例。
我想从Resque工作人员那里访问资产:
Synchronizer.instance.asset(id)
因为worker位于不同的线程中,所以我检索的Synchronizer实例与Rails环境的实例不同。
Rails:
Synchronizer:0x007feb5c389a10
Resque:
Synchronizer:0x00000008566f00
首先,它会破坏使用Singleton的兴趣。我可以将有关资产的信息作为哈希传递给工作人员,但是有另一种方法来访问正确的单例实例吗?
答案 0 :(得分:0)
正如Stefan评论的那样,无法从另一个进程访问ruby对象,无论如何使用单例来保存资产都是个坏主意。我了解到你应该总是避免单身。我终于在Redis中缓存了资产并在需要时检索它们。