概要
最近YAMLファイルで書かれている設定ファイルを目にする機会が増えた為、
最低限の記法だけまとめてみた。
YAMLの基本
YAMLの概要
- 構造化されたデータの表現記法。
- フレームワーク・ツールの設定ファイルに利用されている。
- Ruby関連の設定ファイルでよく利用されている。
- 拡張子は.ymlが使われる事が多い。
- Ruby側では‘yaml’をrequireでYAML関連の命令が使える様になる。
- YAMLではデータ構造を自動で判別してくれる。
- “”などをつけると強制的に型を変換できる。
- #でコメント可能
YAMLが扱えるデータ構造
スカラー(値)
- 文字列
- hello
- fujimoto
- 数値
- 2
- 3
- 32.5
- 真偽値
- true/false
- yes/no
- on/off
- NULL
- null
- ~
- 日付
- 2015-07-08
シーケンス(配列)
- ハイフン(-)に引き続きスカラーを記載する。(ブロックスタイル)
- -の後ろにはスペースが必要
- インラインで[ ]で記載も可能(フロースタイル)
- 入れ子で記載も可能
- 字下げは1文字以上の空白(tabは不可)
- シーケンスを利用する際は、空白のシーケンスを利用する。
マッピング(ハッシュ・連想配列)
- コロン(:)でkey/value形式で利用する。(ブロックスタイル)
- :の後ろにはスペースが必要
- インラインで{ }で記載も可能(フロースタイル)
改行を含むデータ
- |
- 改行記号の後に、+や-で最後の改行のあるなしを設定したりできる。
アンカーとエイリアス
- &
- アンカー
- 変数を定義するイメージ
-
-
- エイリアス
- 変数を利用するイメージ
-
ハッシュのマージ
- <<でマージできる
data.yml
common: &common
user: dbuser
password: password
development:
database: myapp_dev
<<: *common
production:
database: myapp_prod
<<: *common
test:
database: myapp_test
<<: *common
複数のデータを解釈する
- 1つのファイルで複数のデータを解釈させる。
- データの初めを---
- データの終わりを…
- …は省略可能
index.rb
require 'yaml'
# 1ファイル1データを読み込む
datas = YAML.load_file('data.yml')
p datas
# 1ファイルで複数のデータを読み込む
File.open('data.yml') do |io|
YAML.load_documents(io) do |d|
p d
end
end
data.yml
---
- a
- b
- c
---
- 1
- 2
- 3
Rubyのto_yaml
- Rubyの変数をYAMLで変換する事が可能。