けど、環境変数とかで管理するとgitで管理できないのいやだなーと思っていたら、Rails6からは秘密情報もgitで管理出来るではないか。
なので、どのように管理していくのかをいかに記載する。
秘密情報の管理方法
Rails6では、秘密情報をcredentials.yml.enc
というファイルで秘密情報を保持して管理する。このファイルは暗号化されて保存されるのだが、デフォルトで
.gitignore
されているファイルのmaster.key
をもとに復号を行う。このため、
master.key
をcredentials
を編集、取得するサーバや共同者等に配布する必要がある。 秘密情報編集方法
以下のコマンドで秘密情報を編集する。なお、EDITOR
変数を最初に指定する必要があるが、使い慣れたEDITOR
を使用するとよい。筆者は
vim
を常用するため、EDITORにはvim
を指定している。 EDITOR=vim bundle exec rails credentials:edit
編集画面に入るとyml形式で編集する必要がある。
test:
hoge: aaaa
なお、
credentials
は環境ごとに指定可能で、例えばdevelopment
環境で使用する秘密情報を作成したい場合は以下のコマンドを利用する。 EDITOR=vim bundle exec rails credentials:edit --environment development
この場合、config/credentials
フォルダにdevelopment.yml.enc
ファイルが出来上がる 秘密情報利用方法
よく使われるのは、データベースへの接続情報だろう。credentials
の中身が以下の通りとなっている場合、 db:
host: aaa
database: bbb
username: ccc
password: ddd
config/database.yml
は以下のようにかける production:
<<: *default
host: <%= Rails.application.credentials.db[:host] %>
database: <%= Rails.application.credentials.db[:database] %>
username: <%= Rails.application.credentials.db[:username] %>
password: <%= Rails.application.credentials.db[:password] %>
コメント