Railsで環境変数を設定 | Rails5 + CentOS7

プライベートな情報をインターネット上に拡散させてしまうと危ないのは常識といえる。例えば、Railsアプリで設定するデータベースのパスワードは、database.ymlに書くと思うが、そのまま書いてしまうと危険だ。そこで、環境変数を設定する。環境変数を設定する際、つまづいたところがあった。それを含めてご紹介。

環境変数とは

環境変数(かんきょうへんすう、英語: environment variable)はオペレーティングシステム (OS) が提供するデータ共有機能の一つ。OS上で動作するタスク(プロセス)がデータを共有するための仕組みである。特にタスクに対して外部からデータを与え、タスクの挙動・設定を変更するために用いる。
引用:環境変数 Wikipedia

Wikipediaの説明からわかるように、環境変数はRailsアプリに保存するものではなく、OSに保存するものである。したがって、環境変数をRailsで設定すると、次のように値が読み込まれることになると思われる。

  1. Railsアプリで設定されている環境変数のキーを見る
  2. OSに登録されているその環境変数のキーを探す
  3. Railsアプリにキーの値を代入する

環境変数の設定

実際に私がしている環境変数の設定方法をご紹介する。

環境変数のキーをRailsのコードに書く

まず、プライベートなパスワードなどが書かれている部分に、環境変数のキーを割り当てていく。database.ymlに書かれている部分を環境変数に変えるなら、以下のようにする。ENV[‘環境変数のキー名’]で設定する。

当然だが、このままデプロイするとデータベースが読み込めないのでエラーが発生する。

環境変数のキーと値をOSに記憶させる

次に、サーバー側のOSに環境変数のキーと値を覚えさせる。”export”コマンドで環境変数を設定する方法と、”~/.bash_profile”ファイルに記載する方法がある。この二通りの方法をご紹介する。

“export”コマンドで環境変数を設定する

この方法は簡単だ。しかし、環境変数をOSが忘れたときに再び同じコマンドを打たなければならない(忘れることはあるのだろうか…)。以下のように”export”コマンドを入力する。

そして”env | grep 環境変数のキー名”コマンドを入力すれば、環境変数が設定されているか確認できる。これで、環境変数の設定は完了。

“~/.bash_profile”ファイルに記載する

この方法は複数の環境変数を管理するときに便利だ。ほとんどの場合、こちらを利用することになると思う。以下のように”~/.bash_profile”ファイルに環境変数のキーと値を入力する。そして保存。”source ~/.bash_profile”とコマンドを入力して、”~/.bash_profile”を読み込ませる。これで、環境変数の設定は完了。

確認

実際にRailsアプリをデプロイしてみて正常に動くか確認してみる。

その他の方法 | dotenvの利用

環境変数の設定方法として、”dotenv”というgemを活用する方法がある。しかし、私はgemを使わずに設定することにした。なぜなら、”dotenv”で設定した環境変数をgithubにアップロードした時点で、ハッキングに遭遇する可能性が極めて高くなるからだ。それを回避するために、githubに”dotenv”で設定したファイルを”gitignore”に追加する。しかし、私の場合それを忘れそうで怖かった。下記リンクは、dotenvを利用した環境変数の設定方法。

【Rails】『dotenv』で環境変数を管理する方法

まとめ

環境変数をRailsで設定することで、公開されてはならない情報を守ることができそうだ。積極的に活用していきたい。

共有する

このエントリーをはてなブックマークに追加

コメントをする

メールアドレスが公開されることはありません。
*のついている項目は必須です。


*