Railsで環境変数を管理する方法
May 18, 2020
環境変数を設定する方法をいろいろ調べました。その際のメモです。
Multi environment credentials を利用する方法
bin/rails credentials:edit --environment=development
bin/rails credentials:edit --environment=staging
bin/rails credentials:edit --environment=production
これにより、資格情報ファイル config/credentials/staging.yml.enc とステージング固有の暗号化キーが作成され、資格 config/credentials/staging.key 情報ファイルがテキストエディターで開きます。
aws:
access_key_id: "STAGING_KEY"
>> RAILS_ENV=staging rails c
pry(main)> Rails.application.credentials.aws[:access_key_id]
=> "STAGING_KEY"
参考
https://github.com/rails/rails/pull/33521
gem(dotenv-rails)を利用する方法
管理方法
.env
に環境変数を記載します。公開されても問題ない設定だけ Git に登録します。
.env
HOSTNAME = "Hello App"
RAILS_MAX_THREADS = 5
環境ごとにファイルを分けることができます。
.env.development
: 開発環境用.env.test
: test 環境用.env.stating
: staging 環境用.env.production
: 本番環境用
$ bin/rails console
> ENV['HOSTNAME']
=> "Hello App"
導入方法
Gemfile
gem 'dotenv-rails', groups: [:development, :test]
$ bundle
利用方法
HOSTNAME = ENV['HOSTNAME']
database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>