0

Ruby 是否提供了一种机制来在不同运行的 Ruby 进程之间共享变量(更重要的是,类对象和我认为对此有用的任何其他数据抽象)?

例如,如果我有一个类被实例化、初始化并仔细调整到某个状态,我希望该状态在全球范围内可供我所有原本独立的 Ruby 和 Irb 全天运行,超过最初使用的进程的生命周期它。

我现在正在考虑有效解决此问题的一种方案是创建一个微型 Rub​​y 脚本,它仅充当我选择的持久对象和变量一天的保管人,并使用守护程序 gem或类似的方式将其守护。早上第 1 次设置,在所有事情结束时晚上拆卸。

在一天中,另一个 Ruby 程序的许多实例(包含我的实际业务逻辑的那个)会来来去去,但仍能够使用和操作我选择的对象,这些对象在上面的守护进程中保持活动状态。

我应该研究如何将复杂对象序列化到磁盘吗?(实际上更喜欢 RAM 而不是磁盘,因为它在一段时间内都是临时的,并且重新创建它只会花费很多时间)

4

2 回答 2

1

您可能正在寻找类似memcache ( Gem ) 或redis ( Gem ) 的东西。

您可能还对redis-objects感兴趣。

于 2011-12-28T01:15:42.090 回答
1

Ruby的maglev实现似乎非常适合您的需求,因为它提供了持久的分布式 Ruby 对象。

MagLev VM 充分利用 GemStone/S JIT 来实现本机代码性能、分布式共享缓存、完全 ACID 事务和企业级 NoSQL 数据管理功能,以提供强大且持久的编程平台。它可以透明地管理比内存容量大得多(TB)的数据和代码。对于可以存储和执行的对象、类、块、线程或延续的类型没有限制

但根据项目的大小,这可能有点矫枉过正。

于 2011-12-28T01:55:00.890 回答