0Pricing
Ruby Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 读取与写入 JSON
  2. 处理 CSV
  3. YAML 配置
  4. 选择格式
← 返回 Ruby Academy