Railsを触っていたら".yml"とかいう謎のファイルが出てきたぞ。簡潔に説明しろ


概要

yamlとはなんなのかについて、なるべく簡潔に、わかりやすくまとめてみた記事です。

解釈に間違い等ありましたらなんなりとご指摘いただければ幸いです!

ざっくりと概要を説明しろ

配列、または連想配列(ハッシュ)を独自の書き方で作成するためのファイルです。

そして、視覚的に読みやすい、という点でよく設定ファイルに使用されているファイル(らしい)です。

database.yml

# railsでよく見る"database.yml"

default: &default
  adapter: postgresql
  host: 127.0.0.1
  encoding: utf8
  username: postgres
  password: postgres

development:
  <<: *default
  database: postgres

test:
  <<: *default
  database: postgres_test

production:
  <<: *default
  database: postgres

書き方を解説しろ

主な記法は以下になります

この他にもいくつかありますが、もっと詳しく知りたい方は”参考記事”にて

# 配列を定義するには、 - または [] を使用する

- ruby
- on
- rails
-
  - post
  - gres
- yml
# => ["ruby", "on", "rails", ["post", "gres"], "yml"]

[ja, va]
# => ["ja", "va"]
# 連想配列(ハッシュ)を定義するには、 : または {} を使用する

can_use:
  ruby: rails
  php : larabel
# => { "can_use" => { "ruby" => "rails", "php" => "larabel" }}

{ javascript: react, css: bootstrap }
# => { "javascript" => "react", "css" => "bootstrap" }
# もちろん同時に使用可能

suzuki:
  - ruby
  - php
sato:
  - python
  - java
# => { "suzuki" => ["ruby", "php"], "sato" => ["python", "java"] }
# 変数(のようなもの)を定義するには、 & を、呼び出すには * を使用する
# 下記の例の場合、&good に続く ["suzuki", "sato"] が変数へと代入される

ruby: &good
  - suzuki
  - sato
php: *good
# { "ruby" => ["suzuki", "sato"], "php" => ["suzuki", "sato] }

# ハッシュのマージを行うためには、 << を使用する

user: &user
  id: suzuki
  password: suzukiex

develop:
  env: develop
  <<: *user
# => { "user" => { "id" => "suzuki", "password" => "suzukiex" }, "develop" => { "env" => "develop", "id" => "suzuki", "password" => "suzukiex" }}

rubyでの使い方を教えろ

上記の通り、これはただの 配列 や ハッシュ を視覚的にわかりやすくしたものでしかないので、同様の使い方ができます(説明の欄でも書いたとおり、設定に使用されることが多いようです)

具体的には、以下のようにしてファイルを開き、使用します

test.yml
math: S
japanese: A
english: A
science: C
test.rb
File.open('test.yml') do |yml|
  YAML.load_documents(yml) do |yml|
    puts yml
  end
end
# => { "math" => "S", "japanese" => "A", "english" => "A", "science" => "C" }

参考記事