1)背景
Yamlファイルについて、環境設定などの用途で使用されることが多いですが、アプリケーションでデフォルトデータを予めデータベースに登録したい場合なども、csvファイルと比較してyamlファイルは便利です。
私のようにポートフォリオを作成していると、サンプルデータについて、見てもらう人が意識せず、セッティングしておく必要があります。ソースには書かない、csvは可読性が低いなど、yamlが登場する場面だと思います。
2)環境
項目 | 内容 |
---|---|
OS.Catalina | v10.15.4 |
Ruby | v2.5.1 |
Ruby On Rails | v5.2.4.3 |
3)内容
対応1)yamlファイルの作成
細かな設定ができますが。ここでは省略します。後述するデータイメージを参照して下さい。
default_user.yml
- id: 1,
password: 111111
name: '未登録ユーザ'
email: 'example@test.com'
対応2)yamlを読み込んで出力するサービスを作成する
少し長いですが、以下の通りサービスを作成しました。
require('yaml')で機能拡張が必要になります。
user_insert_service.rb
1 class MakeDefaultDataService
2 require('yaml')
(省略)
3 def insert_user_data
4 begin
5 default_user = User.new
6 insert_data = YAML.load_file('app/lib/yaml/default_user.yml')
7 insert_data.each do | data |
8 default_user.id = data["id"]
9 default_user.password = data["password"]
10 default_user.name = data["name"]
11 end
12 default_user.save
13 rescue
14 p "(ユーザ)データ登録に失敗しました。"
15 end
16 end
このメソッドを実行した時、4行目の「insert_data」変数には以下のようにデータがセットされています。
[{"id"=>1, "password"=>111111, "name"=>"未登録ユーザ", "email"=>"example@test.com"}]
あとは、適宜データを加工して、データベースにセットするだけですね。
便利ですね。
以上です。