どうも中田です。
Rails5.2から config/credentials.yml.enc
や config/master.key
が追加されてますが、
これちゃんと使いましょうねという話
これら簡単に言うと、接続情報とか大事な情報を暗号化して、gitで管理できるようにできるもんです。
(接続情報とかgitで管理すべきもんじゃないですもんね)
ファイルの説明
config/master.key: 暗号化するための鍵 (git管理対象外)
config/credentials.yml.enc: 情報を暗号化したファイル
config/credentials.yml.encを編集したい!
EDITOR=vim bin/rails credentials:edit
そうやって編集したり↓こんな感じのファイルになるかもですね
secret_key_base: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx aws: access_key_id: xxxxxxxxxxxxxxx secret_access_key: xxxxxxxxxxxxxxxxxxxxxxxxxx
config/credentials.yml.encを参照したい!
上記でaccess_key_idをプログラムから参照したい場合はこれ。
Rails.application.credentials.dig(:aws, :access_key_id)
じゃあ本番どうすんの問題
一般的に本番環境には、git管理対象のファイルしかデプロイしない。
master.keyはgit管理対象外なので、情報複合化できないじゃん!
そんな時のために↓この環境変数でmaster.keyの情報を設定しておけば大丈夫。
export RAILS_MASTER_KEY=xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxx
はcat config/master.key
の値です
今日はこんな感じで。