YAML 配置
加载与导出 YAML
YAML 配置 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是 YAML
YAML(YAML 不是标记语言)是一种便于人类阅读的数据格式,广泛用于配置。Ruby 通过 yaml 库读取它,该库基于 Psych 构建。
require 'yaml'
text = "name: Ruby\nyear: 1995"
p YAML.load(text)加载 YAML
YAML.load 会将 YAML 字符串解析为 Ruby 对象。映射会变成哈希,序列会变成数组。
require 'yaml'
cfg = YAML.load("port: 8081\ndebug: true")
puts(cfg['port'])
puts(cfg['debug'])缩进定义结构
YAML 使用缩进(只能使用空格,不能使用制表符)来表示嵌套。每深入一层,缩进就会增加。
require 'yaml'
text = "server:\n host: localhost\n port: 8081"
cfg = YAML.load(text)
puts(cfg['server']['port'])YAML 中的列表
序列使用开头的短横线表示。它会被解析为 Ruby 数组。
require 'yaml'
text = "tags:\n - fun\n - oop\n - dynamic"
p YAML.load(text)['tags']转储为 YAML
YAML.dump(或 to_yaml)会将 Ruby 对象序列化回 YAML 文本。
require 'yaml'
data = { 'name' => 'Ruby', 'tags' => ['fun', 'oop'] }
puts(YAML.dump(data))标量类型
YAML 会推断类型:数字、布尔值(true/false)和 null 会映射为相应的 Ruby 值。
require 'yaml'
cfg = YAML.load("count: 3\nactive: false\nnote: null")
puts(cfg['count'].class)
puts(cfg['note'].inspect)符号键
以开头冒号书写的键,在加载后会变成 Ruby 符号。
require 'yaml'
cfg = YAML.load(":env: production")
p cfg多个文档
单个 YAML 文件可以包含多个由 --- 分隔的文档。YAML.load_stream 会返回全部文档。
require 'yaml'
text = "a: 1\n---\nb: 2"
docs = YAML.load_stream(text)
puts(docs.length)写入配置文件
将设置哈希持久化为易读的 YAML 文件。
require 'yaml'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'config.yml')
File.write(path, { 'port' => 8081 }.to_yaml)
puts(File.read(path))读取配置文件
YAML.load_file 通过一次调用读取并解析文件,这是应用加载配置的典型方式。
require 'yaml'
require 'tmpdir'
path = File.join(Dir.tmpdir, 'app.yml')
File.write(path, "name: AppPanel\nport: 8081")
cfg = YAML.load_file(path)
puts(cfg['name'])安全加载
加载不受信任的 YAML 可能不安全。YAML.safe_load 默认仅允许基本类型,从而防止恶意负载。
require 'yaml'
cfg = YAML.safe_load("port: 8081\nname: app")
puts(cfg['port'])快速检查
YAML 使用什么来表示嵌套和结构?
回顾:YAML 配置
您可以使用 YAML 管理配置:
- 使用
YAML.load/load_file进行 read - 使用
to_yaml/YAML.dump进行 write - 缩进定义嵌套,短横线构成列表
- 标量会推断为数字、布尔值或 null
- 对于不受信任的 input,优先使用
safe_load
require 'yaml'
puts(YAML.load("x: 5")['x'] * 2)常见问题解答
「YAML 配置」课时是免费的吗?
是的 — 「YAML 配置」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「YAML 配置」这节课中我会学到什么?
加载与导出 YAML 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「YAML 配置」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 读取与写入 JSON
- 处理 CSV
- YAML 配置
- 选择格式