Dokerで開発時に、docker-compose run
やdocker-compose run
よりも早いrails server
で一時的に動作確認をしたい場合があるかと思う。
そういった場合にも、以下のconfig/database.yml
内の記述だけで対応することができる。
検証環境
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.15.3
BuildVersion: 19D76
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin19]
$ rails -v
Rails 5.2.4.2
database.ymlについて
まず、database.ymlとは
default: &default
adapter: mysql2
encoding: utf8
collation: utf8_general_ci
pool: 5
host: <%= ENV['MYSQL_HOST'] || 'localhost' %>
username: <%= ENV['MYSQL_USERNAME'] || 'root' %>
password: <%= ENV['MYSQL_PASSWORD'] || '' %>
socket: /tmp/mysql.sock
主な内容
adapter: 使用するデータベースの種類(postgresql, mysql2等)
encoding: 文字コード
collation: MySQLの文字列と照合順序(ソート順)、”文字コード言語名比較法”で構成される
pool: 確保する接続プールの数
host: データベースが動作しているホスト名またはIPアドレス
username,password: データベースに接続するユーザー名・パスワード
socket: DB通信の接続口
比較演算子: ||
orと同じ働きをする。
Ruby 2.7.0 リファレンスマニュアル 演算子式
文法:
式 `||' 式
式 or 式
左辺を評価し、結果が真であった場合にはその値を返します。左辺の評価結果が偽であった場合には右辺を評価しその評価結果を返します。
config/database.ymlのhost,username,passwordの部分をこれで書くことで、ENV['MYSQL_HOST']
等の環境変数がない場合に、localhost等を返してくれる。
終わりに。
最後まで読んで頂きありがとうございます
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。