Help us understand the problem. What is going on with this article?

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" }

参考記事

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away