【问题标题】:Missing secret token even if it is set on environment variable即使在环境变量上设置了秘密令牌也丢失
【发布时间】:2016-04-17 08:43:48
【问题描述】:

我已经通过运行这个命令生成了本地密钥:

rake secret

然后在我的 Ubuntu VPS 中,我创建了这样的环境变量:

echo 'export SECRET_KEY_BASE=<locally_generated_secret_string>' >> ~/.bashrc

然后我通过运行这个重新加载了我的 bashrc:

source ~/.bashrc

当我输入 echo $SECRET_KEY_BASE 时,它会向我输出这个生成的字符串

然后我通过 capistrano 上传了我的 rails 应用程序并启动了它。但是,日志仍然显示此错误消息:

#<RuntimeError: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`>

为什么会这样?

【问题讨论】:

    标签: ruby-on-rails environment-variables


    【解决方案1】:

    这可能是因为您的应用程序中还没有设置此项。

    如果您检查您的config/secrets.yml 文件,您会注意到secret_key_base 已为developmenttest 设置,如下所示:

    development:
      secret_key_base: *******...
    
    test:
      secret_key_base: *******...
    

    但可能不适用于production

    然后您需要做的是为production 环境添加配置。因此,在secrets.yml 文件中,您将拥有如下内容:

    development:
      secret_key_base: *******...
    
    test:
      secret_key_base: *******...
    
    production:
      secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
      secret_token: <%= ENV["SECRET_TOKEN"] %>
    

    通过将secret_key_base 设置为ENV["SECRET_KEY_BASE"],它将能够获取您导出到环境中的值,secret_token 也是如此。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 2020-02-12
      • 2019-07-27
      • 2019-11-08
      • 1970-01-01
      • 2023-01-22
      • 2018-07-17
      • 2018-10-04
      相关资源
      最近更新 更多