ruby on rails:heroku:在'生产'环境中缺少`secret_key_base`

hel*_*llo 4 ruby ruby-on-rails heroku environment-variables ruby-on-rails-4

我将密钥添加到heroku config var中,但我仍然收到错误.

这是正确的方法吗?我忽略了secrets.yml,因为我从其他来源读到,将这个推向公众并不是一个好主意.

在heroku配置var:

[key] SECRET_KEY_BASE
[value] 3280570382948240938
Run Code Online (Sandbox Code Playgroud)

secrets.yml

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Run Code Online (Sandbox Code Playgroud)

我还做错了什么?

此外,如果我将我的密钥放入heroku的配置变量中,其他开发人员也不会看到这个吗?那么,还不是那种公众吗?我一直想知道这个概念.

Har*_*yay 9

你可以设置环境变量 heroku config

首先在终端上运行以下命令生成密钥

rake secret
Run Code Online (Sandbox Code Playgroud)

现在在下面的命令中使用该键

heroku config:set SECRET_KEY_BASE='put here new generated key'
Run Code Online (Sandbox Code Playgroud)

您可以参考此链接以获得更多参考

https://devcenter.heroku.com/articles/config-vars


小智 6

我今天遇到了同样的问题,但对我来说解决方案有点不同。我意识到在我当地的环境中,我一直在使用:

Rails.application.secrets.secret_key_base
Run Code Online (Sandbox Code Playgroud)

但对于 Heroku,请改用:

Rails.application.secret_key_base
Run Code Online (Sandbox Code Playgroud)

^这在我当地的环境中也有效。不确定额外的钱.secrets是做什么用的。


loc*_*dev 5

这是使用 heroku 设置密钥库的万无一失的方法:

heroku config:set SECRET_KEY_BASE=$(rake secret)
Run Code Online (Sandbox Code Playgroud)

你可以看到它heroku config:get SECRET_KEY_BASE

并检查 Rails 是否将其拾取Rails.application.secret_key_baseheroku run rails console例如)