Torihaji's Growth Diary

Little by little, no hurry.

Railsのcredentials.yml.encとmaster.keyの関係について

はじめに

タイトルのことで今日、詰まりました。

なんかわかっていなかったので書き残しています。

credentials.yml.enc

こいつは秘密情報で暗号化されたものである。

rails new で作成される。

暗号化されているので、githubにpushしても問題ない。

複合するにはrails new した際に同時に作成されたmaster.keyが必要になる。

master.key

上で書いたcredentials.yml.encを複合する際に必要となる。

これが流出したら外部の人間がcredentials.yml.encを複合して内容を閲覧できてしまうので注意。

ただrailsが.gitignoreに設定してくれているので迂闊に修正しない限りはgitの履歴に載ることはない。

チーム開発においてあるメンバーが作成し、pushしたcredentials.yml.encをローカルで開発していく際に

使う場合はそのメンバーからmaster.keyを直接もらってconfig/master.keyに配置するか環境変数として

チーム内で共有するという形を取る。

環境変数にする場合はRAILS_MASTER_KEYとしてからすること。

コマンドについて

credentialsを参照するためにはコマンドで参照したりすることが多い。

内容を見たいのなら bin/rails credentials:show

編集したいなら bin/rails credentials:editを使用する。

なお編集については vi や vim等のコマンドを指定する必要がある。

自分はvimでやりたいという人間は EDITOR="vim" bin/rails credentials:edit とする。

docker で開発を進めることが多く、大抵 上記のようにvim指定してコマンド実行しても

コンテナにvimコマンドがないことがほとんどだと思うのでそのような場合は apt install vim ?だっけか

そのようなコマンドを叩いてvimをインストールしてから使うこと。

コード内でcredentialsを参照する

Rails.application.credentials.(参照対象の名前) みたいにする。

終わりに

意外とわかってなかった。

これを機に理解した。