Ruby on Rails: Heroku: 'production'环境缺少`secret_key_base`

7

我已将密钥添加到Heroku配置变量中,但仍然遇到错误。

这是正确的方法吗?因为从其他来源阅读到不应将secrets.yml推送到公共场所,所以我忽略了它。

在Heroku配置变量中:

[key] SECRET_KEY_BASE
[value] 3280570382948240938

secrets.yml文件中

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

我还做错了什么?

另外,如果我把我的密钥放到Heroku的配置变量中,其他开发人员也能看到吗?那这不还是公开的吗?我一直对这个概念感到困惑。


2
其他开发人员无法看到您的环境变量,因为每个Heroku应用程序都在单独的虚拟服务实例上运行。 - Andy Waite
3个回答

10

您可以使用heroku config设置环境变量。

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

rake secret

现在将该密钥用于以下命令

heroku config:set SECRET_KEY_BASE='put here new generated key'

您可以参考此链接以获取更多参考资料

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


6

今天我也遇到了同样的问题,但我的解决方案有点不同。我发现在本地环境中,我一直在使用:

Rails.application.secrets.secret_key_base

但是对于 Heroku,使用以下方式:

Rails.application.secret_key_base

这在我的本地环境中也可以工作。不确定额外的 .secrets 有什么用。


1
我也遇到了同样的问题,这个解决了。Rails 6 + 跟随 Scotch Rails API 教程。 - gorlaz

5

这里有一个在Heroku上设置秘密密钥的可靠方法:

heroku config:set SECRET_KEY_BASE=$(rake secret)

你可以用heroku config:get SECRET_KEY_BASE来查看它。

然后可以通过Rails.application.secret_key_base(例如在heroku run rails console中)检查Rails是否接收到它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接