前にdotenvを使ったRails環境変数の設定方法について記事を書いた
(dotenvを使ったRails環境変数設定)ところ、
Rails5.2以降ならcredentials.yml.encで環境変数管理ができると教えて頂いたので、備忘録を兼ねて書きます。
参考記事
Rails5.2から追加された credentials.yml.enc のキホン
credentials.yml.encの編集
config
配下にcredentials.yml.enc
というファイルがアプリを作成した時に作られている。ここに認証情報を定義する。
credentials.yml.enc
を編集するためにはrails credentials:edit
を実行する必要がある。(ここではEDITORが未指定なのでEDITOR="vi"
としている)
ルートディレクトリで以下を実行
$ EDITOR="vi" bin/rails credentials:edit
認証情報を記載
hoge_keyを追加
# aws:
# access_key_id: 123
# secret_access_key: 345
hoge:
hoge_key:hogehogehoge
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 43f416e170882b7f2d3422e9c8d74c81664d9728851531.......
認証情報を取り出す時
hoge_key = Rails.application.credentials[:hoge_key]
credentials.yml.enc
はmaster keyを利用して暗号化・復号され、master keyの値はconfig/master.key
に記載されている。
master.key
はデフォルトで.gitignore
に含まれており、master keyがGitリポジトリに含まれないようになっている。
.gitignore
を確認
# Ignore master key for decrypting credentials and more.
/config/master.key
これで認証情報を含んだソースをGitに上がるのを防ぐことができた。