railsのデータベース設定に環境変数を使いました。
環境変数の設定は「dotenv-rails」gemを使いました。
gemをインストールしたら「.env」に環境変数を書き込みます。
MYAPP_DATABASE_PASSWORD = '@password'
そして「config/database.yml」には環境変数を設定します。
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV['MYAPP_DATABASE_USER'] %>
password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>
host: db
するとエラーが発生しました。
目次
エラーの原因
エラーになった原因は、環境変数の先頭に「アットマーク:@」を付けたからと思われます。
ちなみ、環境変数の「@」を抜くと、パスワードはデータベースと一致しませんが、エラーにはなりませんでした。
また、環境変数を使わず、直接「config/database.yml」にパスワードを記載したら、しっかりデータベースに接続できました。
環境変数で先頭で使われているのが問題で、先頭以外ならエラーにはなりませんでした。
おそらくですが、rubyではインスタンス変数やクラス変数にて、先頭に「@」が使われているので、そうした影響かもしれません。
エスケープ方法を探したのですが、残念ながら見つかりませんでした・・・
よって、私の場合は、データベースのパスワード自体を変更しました。
※データベースのパスワード用途以外で検証してないので、他で同様の事例が発生しするかは分かりません