Ruby
Rails
YAML

YAML 基本記法まとめ

More than 1 year has passed since last update.


概要

最近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で変換する事が可能。