红宝石的新手在这里:
我需要创建一个ruby脚本,当我收到不同的事件数据时,该脚本将被多次执行。每次收到事件时,都会运行此脚本。
我希望脚本访问环境变量并基于该环境变量创建一个新变量。我还想将该新变量存储在某个位置,并在再次运行脚本时(收到另一个事件时)再次访问它。
是否存在一种存储变量并在脚本执行之间访问它的方法?我曾想过将其存储在一个单独的文本文件中,然后访问该文件,但是有其他方法可以实现这一目标吗?
答案 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的类型,则可能会很棘手。