【问题标题】:Figaro - Rails Missing secret_key_base for developmentFigaro - Rails 缺少用于开发的 secret_key_base
【发布时间】:2014-10-05 06:26:35
【问题描述】:

我刚刚切换到在 Rails 4.1.6 中使用 Figaro gem v1.0.0。 自从删除我的 secrets.yml 文件后,我现在收到错误消息:

处理请求时出现意外错误:“开发”环境缺少secret_key_base,请在config/secrets.yml 中设置此值

我还需要 secrets.yml 文件吗?这不是 Figaro 的 application.yml 文件的工作吗?

我的 application.yml 文件是这样的

development:
  secret_key_base: 56....

【问题讨论】:

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


    【解决方案1】:

    查看https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb 的 Railties gem,您可以看到定义的秘密方法,其中包括 secret_key_base 的后备

     def secrets #:nodoc:
      @secrets ||= begin
        secrets = ActiveSupport::OrderedOptions.new
        yaml = config.paths["config/secrets"].first
        if File.exist?(yaml)
          require "erb"
          all_secrets = YAML.load(ERB.new(IO.read(yaml)).result) || {}
          env_secrets = all_secrets[Rails.env]
          secrets.merge!(env_secrets.symbolize_keys) if env_secrets
        end
    
        # Fallback to config.secret_key_base if secrets.secret_key_base isn't set
        secrets.secret_key_base ||= config.secret_key_base
    
        secrets
      end
    end
    

    在 config/application.rb 添加以下内容可以解决问题

    config.secret_key_base = Figaro.env.secret_key_base
    

    【讨论】:

    • 对解决方案的理论解释表示赞赏。
    【解决方案2】:

    我从未使用过 Figaro gem,但尝试这些,创建 config/secret.yml 文件并在内部写入:

    development:
      secret_key_base: <%= ENV['secret_key_base'] %>
    

    【讨论】:

      【解决方案3】:

      我刚刚获悉,从 Rails 4.1.x 开始,config/secrets.yml确实需要上传到 heroku。 Rails 将不再直接查看其 ENV 以找到其secret_key_base

      所以secrets.yml 需要脱离.gitignore 文件,并且您的项目需要重新提交并重新推送到heroku。

      (secrets.yml 仍然会从 heroku 的 ENV 中获取其值,它仍然会像以前一样通过 Figaro 加载 - figaro heroku:set -e production。使用 heroku config 快速查看您的 ENV 变量以确认他们在那里)

      【讨论】:

        猜你喜欢
        • 2014-07-06
        • 2015-07-12
        • 2017-06-02
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-20
        • 1970-01-01
        相关资源
        最近更新 更多