【问题标题】:Rails 5.2 application secrets empty at Heroku在 Heroku,Rails 5.2 应用程序机密为空
【发布时间】:2019-07-04 13:41:20
【问题描述】:

我成功部署到 Heroku,但凭据存在问题。 我在 Heroku 应用程序 CONFIG VARS 部分添加了 RAILS_MASTER_KEY env 变量,并从我的应用程序 master.key 文件中复制粘贴了值:

然后当我从 Heroku 控制台检查它的值时,它仍然是 nil:

Loading production environment (Rails 5.2.3)
irb(main):001:0> Rails.application.secrets.secret_key_base
=> nil
irb(main):002:0> Rails.application.secrets
=> {:secret_key_base=>nil, :secret_token=>nil}
irb(main):003:0> 

但是当我以其他方式检查时:

ENV['RAILS_MASTER_KEY']
=> "sdfghjklm.......1a0befa6139"

显示正确。

我错过了什么?

【问题讨论】:

    标签: heroku ruby-on-rails-5.2


    【解决方案1】:

    我自己弄清楚了——我在 Rails API 上关注了Pluralsight tutorial,它使用旧方法获取 Rails 机密:

    Rails.application.secrets.secret_key_base
    

    从 Rails 5.2 开始,没有更多的 secrets.yml 文件,获取保存在 credential.yml.enc 中的 env 变量的正确方法如下:

    Rails.application.credentials.dig(:secret_key_base)
    

    更新相应代码后,一切按需要运行。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      变化

      SECRET = Rails.application.secrets.secret_key_base
      

      到:

      SECRET = ENV['SECRET_KEY_BASE'] || Rails.application.secrets.secret_key_base
      

      为我工作。 ENV['SECRET_KEY_BASE'] 在生产环境中工作,而Rails.application.secrets.secret_key_base 在开发环境中工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 2016-04-01
        • 2014-11-15
        • 2014-11-19
        • 2014-03-12
        • 2015-10-31
        相关资源
        最近更新 更多