如何重新启动 Ruby 程序?

How can I restart a Ruby program?

我是 运行 个人项目的 ruby 程序,因为完成执行需要大约 20 个小时,所以我想 "save the state" 每小时执行一次程序或所以,以防我的大楼停电。

我希望能够使用程序的最后 "saved state" 重新开始执行。但我不知道是否有工具可以做到这一点,或者是否必须自己对整个事情进行硬编码。

(评论为答案。)

您可能想要使用 Marshal[1]。要保存状态,您 dump(),要恢复状态,您可以 load()restore()。该过程的细节将在很大程度上取决于对象互连的方式以及您保存的数据量。如果数据足够小,你甚至可以使用 JSON,而放弃 Marshal

您可能需要试验 如何dump()/load() 您的数据的最佳选择,因为如果您有一个将所有这些数据加载到内存中的过度拱形对象确实会使您陷入困境(即使您有大量可用内存)。相反,您可能需要将该整体分解为许多单独编组的较小对象,然后编组它们的容器。