1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】RailsにおけるYAMLの基本的な書き方について

Posted at

背景

railsを学習すると拡張子がymlになっているファイルをよく見かけるため、その書き方について調べてみました。
※内容に間違いなどがある場合はご指摘をよろしくお願いします。

#Yamlとは
YAML(YAML Ain’t Markup Language)。構造化されたデータのフォーマットの一種で「.yml」で終わるファイル。他にXML、JSONなどがある。各種設定ファイル、ログファイル、データ保存・交換ファイルとして使われている。

#Yamlの書き方
①スカラー&データ型

  • 文字列:
    '123'、"abc"
  • 数値:
    123、0.01
  • 真偽値:
    true、false、yes、no、on、off
  • Null:
    null、 ~
  • 日付:
    2021-01-01
  • タイムスタンプ:
    2021-01-01 00:00:00 +09:00
  • シンボル:
    :hoge

②配列
行頭に「-」をつける。「-」のあとは半角スペースを入れる。

- apple
- banana
- orange

# ["apple", "banana", "orange"]

半角スペースでインデントを入れると、ネストさせることもできます。

- fruit
-                  #空の「-」を付ける必要がある
  - apple
  - banana
  - orange

#["fruit", ["apple", "banana", "orange"]]

③ハッシュ
「キー: 値」で表す。「:」のあとは半角スペースを入れる。

subject: "Email Changed"

#{ "subject" =>  "Email Changed"}

ハッシュと配列のネストも可能です。

- name:  Tanaka
  email: hoge@mail.com
- name:  Suzuki
  email: fuga@mail.net

#[{"name"=>"Tanaka", "email"=>"hoge@mail.com"},
# {"name"=>"Suzuki", "email"=>"fuga@mail.net"}]

④rubyの記述を書く(ERB形式)
「<%= 内容 %>」という形式で表します。

root: <%= Rails.root.join("tmp/storage") %>

#{ "root" => "<%= Rails.root.join("tmp/storage") %>"}

⑤アンカーとエイリアス
yamlの記述を保存&呼び出しするために使う記述。アンカーは「&」、エイリアスは「*」。

name: &mark
      fuga
email: abc@mail.com
user: 
<<: *mark

#{ "name" => "fuga", "email => "abc@mail.com", "user" => "fuga" }

#参考サイト・記事
https://magazine.rubyist.net/articles/0009/0009-YAML.html
https://qiita.com/tfrcm/items/5f8e4c5795ce41b214d1
https://zenn.dev/shuichi/articles/7d4a171d87a8e4938f35

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?