如何在Heroku上的RAILS 6应用程序上设置RAILS_PRODUCTION_KEY config var
我创建了一个新的Rails 6应用程序,因为它支持多环境凭据,所以我尝试使用如何在Heroku上的RAILS 6应用程序上设置RAILS_PRODUCTION_KEY config var,heroku,ruby-on-rails-6,Heroku,Ruby On Rails 6,我创建了一个新的Rails 6应用程序,因为它支持多环境凭据,所以我尝试使用Rails\u PRODUCTION\u键config变量并删除默认的Rails\u MASTER\u键 heroku config:unset RAILS_MASTER_KEY heroku config:set RAILS_PRODUCTION_KEY=`cat config/credentials/production.key` 但是,这不起作用,在将RAILS\u MASTER\u KEY设置为生产密钥后,我
Rails\u PRODUCTION\u键
config变量并删除默认的Rails\u MASTER\u键
heroku config:unset RAILS_MASTER_KEY
heroku config:set RAILS_PRODUCTION_KEY=`cat config/credentials/production.key`
但是,这不起作用,在将RAILS\u MASTER\u KEY
设置为生产密钥后,我能够让它工作
heroku config:unset RAILS_PRODUCTION_KEY
heroku config:set RAILS_MASTER_KEY=`cat config/credentials/production.key`
如何让Heroku在RAILS 6应用程序中识别RAILS的生产密钥?我也在努力解决这个问题。(这不是一个特定于Heroku的问题。) 一句话:名为
RAILS\u PRODUCTION\u KEY
(或任何其他RAILS环境变量名)的环境变量不是一件事,RAILS不会注意它
从Rails 6凭据特性的(弱,IMO)Rails文档中,我错误地假设生产密钥(在Rails\u production\u key
env变量中或config/credentials/production.key
)将解密主密钥config/credentials/production.yml.enc
)(在RAILS\u MASTER\u KEY
env变量或config/MASTER.KEY
中)将解密config/credentials.yml.enc
,和,config/credentials/production.yml.enc
中给定密钥的值将覆盖config/credentials.yml.enc
中该密钥的值。情况并非如此
这就是它的实际工作原理:
config/master.key
,机密文件的默认位置是config/credentials.yml.enc
RAILS\u MASTER\u KEY
的环境变量,RAILS将从环境变量而不是从config/MASTER.KEY
读取解密密钥production
/development
/等)中运行时,如果在config/credentials
中存在相应的机密文件(例如,config/credentials/production.yml.enc
),Rails将只使用该机密文件,并使用相应的解密密钥(例如,config/credentials/production.key
)仅对其进行解密RAILS\u MASTER\u KEY
的环境变量,RAILS将从环境变量而不是从解密密钥文件读取解密密钥。注意:无论RAILS环境如何,覆盖解密密钥文件的环境变量始终是RAILS\u MASTER\u KEY
我想你自己已经发现了解决方案:简单地通过将生产密钥分配给主密钥来欺骗Heroku使用生产密钥。或者你需要在Heroku上同时拥有两个密钥吗?不,只是为了满足我的OCD要求,将生产密钥var命名为RAILS\u production\u key,但这很好。这就是答案。我还认为它按照你的想法工作,这就是它应该如何工作的原因,因为我觉得在开发和生产中尝试使用不同的关键点将是一场噩梦,因为我想复制开发中的所有内容,并覆盖生产中的某些内容…我的脑袋一直在转这个答案最终为我解决了这个问题,