エンジニア志望のブログ

Railsのdatabase.ymlについて

はじめに
Railsのデータベース接続の中身をいまいち理解していないまま使っていたので調べてみました。
ActiveRecordでデータベースに接続するにはconfig/database.ymlに設定を定義する必要があります。
そのdatabase.ymlについて深堀りしていきたいと思います。

環境
Ruby : 2.7.3
Rails : 6.1.4

メモ

デフォルトの設定ファイル

railsアプリを作成したときに用意されたデフォルトのdatabase.ymlです。
この設定ファイルはMySQL仕様になっています。

default: &default
  adapter: mysql2
  encoding: utf8mb4
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

development:
  <<: *default
  database: MysqlTest_development

test:
  <<: *default
  database: MysqlTest_test

production:
  <<: *default
  database: MysqlTest_production
  username: MysqlTest
  password: <%= ENV['MYSQLTEST_DATABASE_PASSWORD'] %>

yamlについて

そもそもyamlを書いて来なかったのでyamlについて。
アンカー
&を利用することで名前を付け、定義した内容を他の場所で参照できるようにする。

&default

エイリアス
*を利用することでアンカーで定義した内容を参照する。

 *default

マージする
<<を利用することでマージをする。

 <<: *default

database.ymlのパラメータについて

  adapter: 接続するデータベースの種類
  encoding: 文字コード
  pool: コネクションプーリングで使用するコネクションの上限
  username: ユーザー名
  password: パスワード
  socket: ソケットファイルのパス

コネクションプールとは??

DBに接続した状態を維持したコネクションをいくつか用意ておき、それを使い回す仕組みのこと
DBとの新規接続を減らすことでパフォーマンスを向上させるらしい、、、
デフォルトでは5つのコネクションを使い回すように設定されているようです。