LoginSignup
0
0

More than 3 years have passed since last update.

railsでDATABASE_URLを使う際の注意点

Last updated at Posted at 2020-06-24

概要

環境変数のDATABASE_URLを使うとユーザー名やパスワードなど複数の項目を1つの環境変数で指定出来て便利です。
しかしハマりポイントもあるのでDATABASE_URLを使う際の注意点を紹介します。
なお本番環境にはあまり関係ない話です。

投稿時点でのrailsのバージョンは6.0.3.2です。

優先順位について

database設定の優先順位は下記の通りです。

  1. database.ymlのurl項目
  2. 環境変数DATABASE_URL
  3. database.yml

参考url
https://railsguides.jp/configuring.html#%E6%8E%A5%E7%B6%9A%E8%A8%AD%E5%AE%9A

DATABASE_URLが使われるのは現在のRAILS_ENVだけ

DATABASE_URLが使われるのは現在のRAILS_ENVだけのようです。
しかしRAILS_ENVがdevelopmentの場合はtestに対してもtaskが実行されます。
そのためdevelopmentで db:create を行うとtestに対しても db:create が実行されますがtestではDATABASE_URLを参照されないため失敗するなどといった問題が発生します。

回避策としてはdatabase.ymlのurlでDATABASE_URLを使うように明示的に指定する方法があります。
ただしこれも今後は注意が必要そうです。

今後の注意点

上記の問題修正のためにDATABASE_URLが設定されていた場合はRAILS_ENVがdevelopmentでもtestに対してtaskを実行しない修正が行われました。
すでにmasterにはマージ済みでおそらく6.1でリリースされると思われます。

現在developmentでDATABASE_URLを使っている場合はdevelopmentとtestでdatabaseのズレが発生するようになることが予想されます。
今後はtest環境で別途手動でtaskを実行するのを忘れない、もしくはそもそもdevelopmentではDATABASE_URLを使わないなどの対応が必要そうです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0