首先,我知道这个问题之前已被问过并多次回答 - 我已经尝试了解决方案,但没有运气。
我正在运行Ruby 2.0.0 Rails 4.2.6,Devise~> 3.5,并部署到Redhat Openshift。每当我尝试部署(或类似地调用Rails,例如使用bundle exec rails c
而ssh'd)时,我会收到以下错误:
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '2d229ab5ed60d38692a890544be96c8108040e18e4653832e2688dc1bed378afe6ef0f3386692f3c9b65336aba5b8e8e500accc2eadc6e70d6bc6c92f41c97fb'
Please ensure you restarted your application after installing Devise or setting the key.
据我了解,Rails 4+下的Devise将使用Rails.secret_key_base
作为其密钥,我很确定我已设置。我的回购中只出现以下secret_key
:
production.rb
Rails.application.configure do
# Secret key base
config.secret_key_base = ENV["SECRET_KEY_BASE"]
end
我已经验证环境密钥是在OPns上下文中的Openshift上设置的:
[ repo]\> bundle exec env | grep SECRET_KEY
SECRET_KEY_BASE=c509...
我也尝试过更明确地将密钥设置为Devise:
Devise.setup do |config|
# 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` on Rails 4+ applications as its `secret_key`
# by default. You can change it below and use your own secret key.
config.secret_key = ENV["SECRET_KEY_BASE"] if Rails.env == 'production'
end
..但我仍然得到同样的错误。
我错过了什么?
答案 0 :(得分:2)
RAILS_ENV
,所以它作为开发运行。一个简单的:
rhc set-env RAILS_ENV=production
将所有内容排序。