是什么原因导致使用Rails 5.2的CircleCI缺少secret_key_base?

时间:2018-07-09 11:19:30

标签: ruby-on-rails devise circleci ruby-on-rails-5.2

我有一个正在使用Devise的Rails 5.2应用程序。一切在我的计算机上都可以正常运行,但是当我尝试在CircleCI中运行测试时,出现此错误:

#!/bin/bash -eo pipefail
bundle exec rake db:create
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:

  config.secret_key = 'faa1201370967c22ce2136d7ad84e50705ed50395292b9fde9f76b04dae12bb9e25246418393d779cbae15b259bac0e3430d28ff24c166c08ece1cae2ac19531'

您可以在这里看到它:https://circleci.com/gh/dashmantech/modulator/12

devise.rb上的评论和默认设置为:

  # The secret key used by Devise. Devise uses this key to generate
  # random tokens. Changing this key will render invalid all existing
  # confirmation, reset password and unlock tokens in the database.
  # Devise will use the `secret_key_base` as its `secret_key`
  # by default. You can change it below and use your own secret key.
  # config.secret_key = "53552bdcd8ec0bb6a83d984380ae1a81233f73cce6093441b097efe1b6bd893eec5da67f2fb3afa3b23242e1b1f089c56eb82621996946f8960d8d71f95602cf"

似乎Devise会选择Rails的秘密密钥库。我已经在我的CircleCI设置中(在其Web UI上)定义了SECRET_KEY_BASE,它似乎已正确导出:

enter image description here

为什么会出现此错误?我想念什么?处理此secret_key_base进行测试和生产的Rails-5.2方法是什么?

我的应用程序的完整源代码在这里:https://github.com/dashmantech/modulator(我不确定与此问题有关)。

1 个答案:

答案 0 :(得分:0)

我面临着完全相同的问题(使用Rails 5.2.1和Devise 4.4.3)。

我只是通过更新 Devise gem到 4.5.0 解决了它。

(我仍然不知道为什么Devise无法在产品中获得secret_key_base ...)