credentials.yml.encを使って環境変数を設定する【rails】

はじめに

railscredentials.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です。

環境変数の設定は下記のようにyaml形式で設定します。

aws:
  access_key_id: aaaaa

secret_access_key: bbbbb

取得方法

続いて、設定した環境変数の取得方法です。

先程設定したaccess_key_idsecret_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ファイルがない場合にはエラーが発生するようになります。