Ruby:在脚本运行之间存储和更新变量

时间:2019-05-23 17:04:28

标签: ruby

红宝石的新手在这里:

我需要创建一个ruby脚本,当我收到不同的事件数据时,该脚本将被多次执行。每次收到事件时,都会运行此脚本。

我希望脚本访问环境变量并基于该环境变量创建一个新变量。我还想将该新变量存储在某个位置,并在再次运行脚本时(收到另一个事件时)再次访问它。

是否存在一种存储变量并在脚本执行之间访问它的方法?我曾想过将其存储在一个单独的文本文件中,然后访问该文件,但是有其他方法可以实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

您应该将其保存在文件中,这就是文件的用途!

如果您只需要从Ruby访问变量(例如,您不需要能够在文本编辑器中编辑保存的文件),则最简单的方法是使用Marshal。 / p>

data = {a: 1, b: ["two"]}

# save
File.open("savefile", "w") { |f| Marshal.dump data, f }

# load
loaded = File.open("savefile") { |f| Marshal.load f }

loaded == data # true

更健壮和稳定的解决方案是将其另存为JSON,但是如果您的数据不能自然地映射到JSON的类型,则可能会很棘手。