credentials.yml.encを使って環境変数を設定する【rails】
はじめに
railsのcredentials.yml.enc
を使って環境変数を設定する方法
credentials.yml.enc とは?
credentials.yml.enc
は環境変数をまとめておく場所です。
credentials.yml.enc
自体は暗号化されていて、master.key
ファイルによって復号化されます。
どちらもconfig
配下にあります。
設定方法
下記のコマンドを使ってcredentials.yml.enc
ファイルを編集します。
$ EDITOR=vi bundle exec rails credentials:edit
EDITOR=vi
は編集するエディタを指定しています。
この場合はvim
です。
aws: access_key_id: aaaaa secret_access_key: bbbbb
取得方法
続いて、設定した環境変数の取得方法です。
先程設定したaccess_key_id
とsecret_access_key
の値を取得する場合は、それぞれ下記のようになります。
$ bundle exec rails c irb(main):001:0> Rails.application.credentials.aws[:access_key_id] => aaaaa irb(main):001:0> Rails.application.credentials.secret_access_key => bbbbb
また、本番環境でcredentials.yml.enc
を使う場合は、下記の設定もしておきます。
config.require_master_key = true # デフォルトではコメントアウトされている。
上記の設定を行うことで、復号化に必要なmaster.key
ファイルがない場合にはエラーが発生するようになります。