注意
2022/06/18(土)時点で以下の情報が正しいかどうかは確信が持てません。
前提
- GitHub Actions であることや Rails であることは本質的には関係ありません
結論(注意するところ)
services
配下の postgres
において、env
で指定する環境変数の「キー」は予約語(決められた語)であること
POSTGRES_USER
とPOSTGRES_PASSWORD
です- これは当該コンテナがそうなっているからです
- コンテナによって命名は異なるので、ドキュメントの確認は必須です
- データベースを使う全ての
step
において、それぞれにホストを設定する必要があります
具体的にこの部分は下記のような YAML になります。
services: postgres: image: postgres:11.2 ports: - 5432:5432 env: POSTGRES_USER: WATASHI_NO_NAMAE POSTGRES_PASSWORD: WATASHI_NO_PASSWORD options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
db:migrate
や db:seed
などで PostgreSQL に接続する際には、 ホストとして postgres
という予約語(決められた語)を指定すること
localhost
ではなくpostgres
です- これも当該コンテナのホスト名の仕様によります
具体的にこの部分は下記のような YAML になります。
- name: $ bundle exec rails db:migrate を行う run: | bundle exec rails db:migrate env: PG_HOST: postgres RAILS_ENV: test
上記の指定語以外は config/database.yml
に従う
これまでに書いた内容は指定語です。それ以外の語の命名は自由ですが、上記の指定語と整合性をもたせて書く必要があります。config/database.yml
に丁寧に書きます。
感想
地味にハマりました……。