在包括rails5.1和这个版本之前,使用secrets.yml保存一些密码,而在rails5.2版本开始使用credentials保存文件密码,rails5.2新增的文件包括
credentials.yml.enc #包括一些密码,包括阿里云的密码,secret_key_base等内容
master.key #对credentials.yml.enc文件加密的密码,不能公开,必须添加到.gitignore文件中
打开credentials.yml.enc的方式
EDITOR="vim" rails credentials:edit
credentials.yml.enc的内容参考
development:
aws:
access_key_id: 123
secret_access_key: 345
production:
aws:
access_key_id: 123
secret_access_key: 345
secret_key_base: 14abb35c3e27e6dd5feb476f11aa63d026e7bb6f72ad4df5d39475261cf4525
master.key的内容
#默认是一串密码就行,也可以写成如下的形式
RAILS_MASTER_KEY=123
在rails console中获取credentials.yml.enc的密码内容
#rails console
Rails.application.credentials.development[:aws][:access_key_id] #123
Rails.application.credentials.secret_key_base #14abb35c3e27e6dd5feb476f11aa63d026e7bb6f72ad4df5d39475261cf4525
在系统中获取credentials.yml.enc的密码内容
#dig是获取多层嵌套的hash值
<%= Rails.application.credentials.dig(:development, :aws, :access_key_id) %>