YAML 設定
YAML を読み込み、書き出します。
「YAML 設定」はCoddyKit上の無料Ruby Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはRuby Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ruby Academyコースには全4レッスンが含まれています。
YAML とは
YAML(YAML Ain't Markup Language)は、設定に広く使われている、人が読みやすいデータ形式です。Ruby では yaml ライブラリ(Psych を基盤としています)を使って読み込みます。
require 'yaml'
text = "name: Ruby\nyear: 1995"
p YAML.load(text)YAML の読み込み
YAML.load は YAML 文字列を解析して Ruby オブジェクトに変換します。マッピングは Hash に、シーケンスは Array になります。
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のArrayにパースされます。
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のSymbolになります。
require 'yaml'
cfg = YAML.load(":env: production")
p cfg複数のドキュメント
1つの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は1回の呼び出しでファイルを読み込んでパースします。アプリが設定を読み込む一般的な方法です。
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を使用します - 書き込みには
to_yaml/YAML.dumpを使用します - インデントで入れ子構造を定義し、ダッシュでリストを作成します
- スカラーは数値、ブール値、nullとして型推論されます
- 信頼できない入力には
safe_loadを優先します
require 'yaml'
puts(YAML.load("x: 5")['x'] * 2)よくある質問
「YAML 設定」レッスンは無料ですか?
はい。「YAML 設定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ruby Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ruby Academyコースには全4レッスンが含まれています。
「YAML 設定」で何を学びますか?
YAML を読み込み、書き出します。 ブラウザで直接実行するハンズオンコードでRuby Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ruby Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのRuby Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「YAML 設定」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このRuby Academyレッスンでコードを書いて実行できますか?
はい。すべてのRuby Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- JSON の読み書き
- CSV の扱い
- YAML 設定
- フォーマットの選択