【问题标题】:Unable to set secret_key_base for the production environment in Ruby on Rails 4.1.4 application running on Heroku无法在 Heroku 上运行的 Ruby on Rails 4.1.4 应用程序中为生产环境设置 secret_key_base
【发布时间】:2014-11-18 15:14:50
【问题描述】:

我无法为在 Heroku 上运行的 Ruby on Rails 4.1.4 应用程序中的生产环境设置 secret_key_base

以下是我尝试过的步骤:

  • 运行rake secret并将密钥复制到剪贴板

  • 运行heroku config:set SECRET_KEY_BASE=%SECRET_KEY%

它返回成功,Heroku 在网站的仪表板中列出了这个环境变量,但应用程序仍然认为没有提供密钥:

“生产”环境缺少secret_key_base,请设置此值 在config/secrets.yml

为什么?我究竟做错了什么?我该如何解决?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    config/secrets.yml 添加到版本控制并再次部署。您可能需要从 .gitignore 中删除一行,以便提交文件。

    .gitignore为我的 Rails 应用程序创建的 Github 包含 config/secrets.yml


    按照以下步骤操作:

    1. $ heroku config(在终端中运行此命令)
    2. SECRET_KEY_BASE复制值
    3. 将值粘贴到 secrets.yml 文件以代替 <%= ENV["SECRET_KEY_BASE"] %>(不带任何引号)

    例如

    production:
      secret_key_base: b1de60dd9e00816d0569c5ce3f8dbaa3c8ea4a7606120dc66cXXXXXXXXXXXXXXXXXXXXXX
    
    1. 重新部署

    注意:实际上这并不安全,但如果您只是想在生产模式下临时运行您的应用程序以进行测试或在紧急情况下运行

    希望对你有用……

    【讨论】:

    • 是的,它有效。非常感谢!但是为什么“config/secrets.yml”文件默认包含在 .gitignore 中?关于你的第二个版本——我读到为生产环境保留密钥库是不安全的。为什么推荐它?
    • @FrozenHeart :我遇到了和你一样的问题,我只是想在生产环境中运行应用程序,所以我尝试了这个并成功了。但在那之后我开始了解第一个选项并进行了更改......我很高兴知道我可以以某种方式帮助你......默认情况下它会放入 gitignore 以避免未跟踪的文件
    • 我的意思是为什么他们决定将它放在 .gitignore 文件中?
    【解决方案2】:

    您的config/secrets.yml 中有什么内容?对于生产,它应该包含以下行:

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

    【讨论】:

    • 是的,但在 ENV 周围也有“"
    • 也许这被 Heroku 识别为配置变量而不是环境变量?如果是这样,我该怎么办?
    猜你喜欢
    • 2014-10-17
    • 1970-01-01
    • 2016-11-05
    • 2012-08-13
    • 1970-01-01
    • 2021-01-26
    • 2017-05-03
    • 2014-04-30
    • 2017-08-31
    相关资源
    最近更新 更多