【发布时间】:2018-07-09 11:19:29
【问题描述】:
我有一个使用 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 设置中定义了SECRET_KEY_BASE(在他们的网络用户界面上),它似乎已正确导出:
为什么会出现此错误?我错过了什么? Rails-5.2 处理这个secret_key_base 以进行测试和生产的方式是什么?
我的应用程序的完整源代码在这里:https://github.com/dashmantech/modulator(我不确定与此问题相关的内容)。
【问题讨论】:
-
我没有看到
SECRET_KEY_BASE在您的circleci.yml配置中定义。在您的devise.rb文件中也没有任何与secret_key相关的设置。 -
@Зелёный: SECRET_KEY_BASE 在 CircleCI 的环境变量中,而不是在
circleci.yml上。我正在添加一个屏幕截图以显示它正在运行,但您可以在 CircleCI 的输出中自己看到它。devise.rb需要什么设置? -
Here 你需要设置
config.secret_key = ENV['SECRET_KEY_BASE']。 -
它说:“Devise 将默认使用
secret_key_base作为其secret_key”,我认为这意味着 Devise 将使用 Rails 的secret_key_base作为secret_key而无需手动设置它。我认为选择它的代码是这样的:github.com/plataformatec/devise/blob/… -
@pupeno 如果你有
secrets.yml和secret_key_base,你可以吗?
标签: ruby-on-rails devise circleci ruby-on-rails-5.2