Railsを触っていたら".yml"とかいう謎のファイルが出てきたぞ。簡潔に説明しろ
概要
yamlとはなんなのかについて、なるべく簡潔に、わかりやすくまとめてみた記事です。
解釈に間違い等ありましたらなんなりとご指摘いただければ幸いです!
ざっくりと概要を説明しろ
配列、または連想配列(ハッシュ)を独自の書き方で作成するためのファイルです。
そして、視覚的に読みやすい、という点でよく設定ファイルに使用されているファイル(らしい)です。
# 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での使い方を教えろ
上記の通り、これはただの 配列 や ハッシュ を視覚的にわかりやすくしたものでしかないので、同様の使い方ができます(説明の欄でも書いたとおり、設定に使用されることが多いようです)
具体的には、以下のようにしてファイルを開き、使用します
math: S
japanese: A
english: A
science: C
File.open('test.yml') do |yml|
YAML.load_documents(yml) do |yml|
puts yml
end
end
# => { "math" => "S", "japanese" => "A", "english" => "A", "science" => "C" }
参考記事
Author And Source
この問題について(Railsを触っていたら".yml"とかいう謎のファイルが出てきたぞ。簡潔に説明しろ), 我々は、より多くの情報をここで見つけました https://qiita.com/suzuki-x/items/40ef7b5971eb670036d3著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .