updated on 2019-04-17
目的: database.ymlやdatabase.ymlなどの各ファイルで、環境変数として機密情報を隠したいときに使える
credentials.yml.encの内容は暗号化されてるためcredentials.yml.encを編集するためにはeditor=vim rails credentials:edit
コマンドを実行します。
# credentials.yml.encをviで開く $ EDITOR="vi" bin/rails credentials:edit
credentials.yml.enc
db: host: xxxxx database: xxxxx username: xxxxx password: xxxxx aws: access_key_id: xxxxxxx secret_access_key: xxxxxxx secret_key_base: xxxxxxx
config/database.yml
# 省略
production:
<<: *default
# 省略
host: <%= Rails.application.credentials.db[:host] %>
# host: <%= Rails.application.credentials.dig(:db, :host) %>でも良い
database: <%= Rails.application.credentials.db[:database] %>
# database: <%= Rails.application.credentials.dig(:db, :database) %>
username: <%= Rails.application.credentials.db[:username] %>
# username: <%= Rails.application.credentials.dig(:db, :username) %>
password: <%= Rails.application.credentials.db[:password] %>
# password: <%= Rails.application.credentials.dig(:db, :password) %>
config/database.yml
# 省略 amazon: service: S3 access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> region: ap-northeast-1 bucket: mybucket
暗号化するときの鍵は RAILS_MASTER_KEY という環境変数に格納
$ export RAILS_MASTER_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$ rails c
irb(main):001:0> Rails.application.credentials.secret_key_base
=> xxxxx..
Editor指定がめんどい...
$ EDITOR=vi bin/rails credentials:edit
.bash_profileなどに環境変数:EDITORを指定しておけば、EDITOR="xxx"
の指定は不要になります。
# .bash_profileに環境変数 EDITOR を設定する
$ echo 'export EDITOR="vi"' >> ~/.bash_profile
$ source ~/.bash_profile
$ echo $EDITOR
#=> vi
$ bin/rails credentials:edit