You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中如何让Hash存储的产品数据在程序结束后保留?

Ruby程序结束后保留Hash数据的实现方法

完全可行,核心思路是把Hash数据持久化到外部存储(比如文件或数据库),程序启动时再从存储中加载。下面是几种适合初学者的简单实现方法:

方法一:用JSON格式存储(标准库支持)

JSON是通用的数据格式,适合跨语言读取,Ruby的json标准库可以直接处理Hash和JSON的转换:

require 'json'

# 指定保存数据的文件路径
DATA_FILE = 'products.json'

# 加载已保存的产品数据
def load_products
  File.exist?(DATA_FILE) ? JSON.parse(File.read(DATA_FILE)) : {}
end

# 将当前Hash数据写入文件
def save_products(products)
  File.write(DATA_FILE, JSON.pretty_generate(products))
end

# 程序示例
products = load_products

# 添加或修改产品
products["苹果"] = 5.99
products["香蕉"] = 3.49

# 保存数据,确保程序退出后数据不丢失
save_products(products)

方法二:用YAML格式存储(更易读)

YAML是一种人类友好的序列化格式,同样属于Ruby标准库,适合存储简单的键值对:

require 'yaml'

DATA_FILE = 'products.yml'

def load_products
  File.exist?(DATA_FILE) ? (YAML.load_file(DATA_FILE) || {}) : {}
end

def save_products(products)
  File.write(DATA_FILE, products.to_yaml)
end

# 使用示例
products = load_products
products["纯牛奶"] = 8.99
save_products(products)

注意事项

  • 文件路径可自行调整(比如放到~/.my_app_products.yml),避免被误删除
  • 如果数据包含敏感信息,建议加密后再写入文件
  • 若有多进程/线程同时读写文件,需要添加文件锁防止数据损坏

内容的提问来源于stack exchange,提问作者Veronica Rodrigues

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:10:29