はじめに
railsで開発しているときに、よく目にする(した)secrets.ymlの役割がよくわかっていなかったので備忘録的にまとめる。
(rails5.2以降は廃止され、credentials.yml.encというファイルになった → Rails5.2からsecrets.yml*が廃止されcredentials.yml.encに統合されるよ)
まとめ
- secrets.ymlは暗号化通信のために利用される設定ファイル
- secret_key_baseを設定し通信を暗号化する
- production環境で他人に見られても問題ない
そもそも
- .ymlとはYAMLファイルの拡張子である。
- YAMLファイルは設定を簡潔に記述するためのファイル
(参考→YAMLとは何か? - いつもRailsの設定ファイルで出てくるやつの正体)
YAMLファイル自体が動くのではなく、プログラムが読み込んで使う。
役割
とりあえずrails newしてみる。
どうやらsecret_key_baseを設定しているようだ。
secret_key_baseの役割は、Cookieの暗号化など。
secret_key_baseの値が漏れてしまうと復号されてしまうので、production環境では環境変数にsecret_key_baseの値を設定し、secrets.ymlで環境変数を指定する。
production環境においては環境変数が漏れなければ問題ないため、secret.ymlをgitignoreする必要はない。
(参考→
Railsのsecret_key_baseを理解する(翻訳)
secret_key_baseからのhack
)
以上です。