久しぶりにrails記事書きます。
credential.ymlのことです。
version 5.2~実装されたsecrets.ymlの後継に当たるものですね。
理解が曖昧だったのでまとめました。
credential.ymlの作成
作成されるタイミングは rails new
した時。
create config/master.key
と出てました。
しかし、create credential.ymlのような記述は探してもなかったですけどrails newしたら作られてましたので同じタイミングですね。
* create master.keyしたすぐに.gitignoreにappend処理が行われるので、gitの管轄から自動的に外されます。
もしも、どちらかもしくはどっちのfileも削除してしまった際には
$EDITOR='vi' rails credentials:edit
コマンドで再作成できます。
このコマンドは主に、credentialsを編集するときに使います。
(おそらく、fileがなければ、作成しあれば編集するような条件をかけているのかな?)
credentials.ymlの編集
編集は$EDITOR='vi' rails credentials:edit
のコマンドを使います。
aws:
access_key_id: 123
secret_access_key: 345
# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
初期はこんな画面です。おそらく、初期では全てコメントアウト扱いです。
使いたい値を組み込んでみましょう。
Google:
google_spred_key_id: AAABBBCCC
気をつけるのは、google:
の前の空欄を空けること。空けないと値がnilになりました。
設定できているかを確認するときには、
rails cで Rails.application.credentials.awsやRails.application.credentials.google
などで取れます。(ハッシュ)
さらに、googleの中のgoogle_spred_key_idを取得したい時Rails.application.credentials.google[:google_spred_key_id]
と記述します。
削除してしまった際
ActiveSupport::MessageEncryptor::InvalidMessage
こんなエラーが出るときがあります。credential.yml or master.keyがない。それか、整合性が合わない時に起こりうるので、そんな時は再発行などを試してみてはいかがでしょうか。
$EDITOR='vi' rails credentials:edit
最後に感想
最後に、運用方法ですが
credentialはmasterkeyとニコイチです。一緒にないと動きません。
credentialがなくてもrails cなどは動きますがmasterkeyがなくなれば何もできなくなります。
なので、大人しく$EDITOR='vi' rails credentials:edit
して作成してあげましょう。
credentialを他の人が作成して、自分が編集したい時には作成した時点のmasterkeyが必要です。
なので、gitなどにはあげずに全員に配ってあげてください。(多分)
credentialが公開鍵
mastekeyが秘密鍵の役割かな?
なので秘密鍵は絶対に後悔しないようにしましょう。