データベースのパスワードなど環境に依存する値をdatabase.ymlに入れてしまうと、その他の環境では動作しなくなってしまいます。
そこで、環境変数を管理するファイル.envを開発環境ごとに用意して、Railsプログラムから参照させるようにしましょう。
設定自体はdotenvというgemを使えば簡単にできます。
目次
環境変数を扱うために必要なgemをインストール
Gemfileに下記を追記。
gem 'dotenv'
その後インストールしてください。
$ bundle install
環境変数を設定する
ルートディレクトリに.envファイルを作成して、下記のように記述します。
DATABASE_USER=root
DATABASE_PASS=password
キー=値
の形にしてください。
環境変数を取得する
作成した環境変数は、コンソール(rails console
)、Railsプロジェクト内の各種ファイルでENV['キー']
で取得できます。
コンソールの場合は以下。
[1] pry(main)> ENV['DATABASE_USER']
=> "root"
[2] pry(main)> ENV['DATABASE_PASS']
=> "password"
database.yml
に記載する場合は以下。
default: &default
adapter: mysql2
encoding: utf8mb4
username: <%= ENV['DATABASE_DEV_USERNAME'] %>
password: <%= ENV['DATABASE_DEV_PASSWORD'] %>
socket: /tmp/mysql.sock
まとめ
環境に依存する変数を.env
に記録して必要なときに呼び出すようにすれば、開発環境が変わっても問題なく動作するようにできます。
.env
はgitなどのホスティングサービスで公開しないようにしておくとよいですね。
コメント