【備忘録】【Rails6】環境変数の先頭に「@」があるとエラーになる

★環境
 Ruby:3.0.3
 Rails:6.1.4.1

railsのデータベース設定に環境変数を使いました。

環境変数の設定は「dotenv-rails」gemを使いました。

Pikawaka
dotenv-railsを使って環境変数を管理しよう 環境変数を簡単に管理することが出来るdotenv-railsのgemについて導入方法から使い方まで詳しく解説させていただきます。この記事を読めば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ではインスタンス変数やクラス変数にて、先頭に「@」が使われているので、そうした影響かもしれません。

エスケープ方法を探したのですが、残念ながら見つかりませんでした・・・

よって、私の場合は、データベースのパスワード自体を変更しました。

※データベースのパスワード用途以外で検証してないので、他で同様の事例が発生しするかは分かりません

よかったらシェアしてね!
目次
閉じる