【问题标题】:Missing secret_key_base for production environment - hosting a rails 4.1.4 app on heroku生产环境缺少 secret_key_base - 在 heroku 上托管一个 rails 4.1.4 应用程序
【发布时间】:2014-10-17 17:37:57
【问题描述】:

我创建了一个我试图在 heroku 上托管的 rails 4.1.4 应用程序,但出现以下错误 -

production 环境缺少secret_key_base,请在config/secrets.yml 中设置此值

我的 secrets.yml 文件看起来有 secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 在生产中

我运行 rake secret 并将结果保存在环境变量 SECRET_KEY_BASE 中。当我在 heroku 上登录我的应用程序时,我可以在单击设置时看到存储在配置变量中的值。

其他解决方案建议我将 config/secrets.yml 添加到 git 并重新部署到 heroku - 但是我不希望将 secrets.yml 或任何 yml 文件添加到版本控制。

有什么想法吗?

谢谢!

【问题讨论】:

  • 你试过heroku restart吗?
  • 刚刚做了 - 仍然是同样的错误。
  • 嗯好吧 - 你有任何其他的依赖运行等?这可能会导致问题
  • 抱歉,我不确定这意味着什么 - 我在 heroku 上有以下配置变量 - DATABASE_URL、FACEBOOK_KEY、FACEBOOK_SECRET、HEROKU_POSTGRESQL_COBALT_URL、LANG、RACK_ENV、RAILS_ENV、SECRET_KEY_BASE
  • 如果 secrets.yml 不在您的源代码中并且未部署到 heroku,您的应用程序将不知道查看 ENV 变量。重点是您可以安全地添加此文件,因为它只有 dev 和 test 的值。

标签: ruby-on-rails heroku ruby-on-rails-4


【解决方案1】:

当您部署到 Heroku 时,您是通过 Git 进行部署的。任何未包含在您的 git 存储库中的文件都不会被推送到您的服务器。因此,您现在在 secrets.yml 中拥有什么并不重要 - 它没有被部署。

提交配置文件或 YAML 文件没有任何问题 - 问题在于提交 secrets。如果您提交您的 API 密钥和密码,那么您必须信任所有有权访问您的源代码的人。如果你的代码在 Github 上,这是不可能的(因为你不相信地球上每个人都有电脑),但在小公司里仍然是个坏主意。如果有人离开、丢失笔记本电脑或感染恶意软件(如果他们的机器上没有生产凭证),您的压力会小得多。

您已经在做正确的事情来避免这种情况。使用环境变量来配置您的应用程序会将这些秘密保留在您的存储库之外,即使这些配置文件已提交。

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 1970-01-01
    • 2014-11-18
    • 2016-01-12
    • 2014-06-23
    • 2016-11-05
    • 2017-06-02
    • 2014-07-06
    相关资源
    最近更新 更多