Разработать секретный ключ не был установлен
Я разрабатываю приложение Rails 4 с использованием Active Admin gem для администрирования задней части. Активный админ, в свою очередь, использует разработать для проверки подлинности пользователя. Теперь, когда я пытаюсь развернуть приложение с помощью capistrano
на сервере VPS, я получаю следующее сообщение об ошибке:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
поиск Google не делает много для этой ошибки. Любые предложения, почему он бросает ошибку? Должен ли я добавить секретный ключ к devise
инициализатор, так как я не могу найти место для установки такого ключа конфигурации в initializers/devise.rb
?
16 ответов:
Я побежал и начал получать ту же ошибку.
я добавил его в виде строки в
config/initializers/devise.rb
и ошибка была исправлена.Кажется commit, который ввел его.
то, что работало для меня на Rails 4.1 и Devise 3.2.4, находится в
config/initializers/devise.rb
:config.secret_key = ENV['DEVISE_SECRET_KEY'] if Rails.env.production?
по состоянию на разработать 3.2.3 для приложений Rails 4 + расположение ключа по умолчанию равно YourAppName:: Application.конфиг.secret_key_base найдено в config / initializers / secret_token.РБ
по состоянию на список изменений:
Devise будет использовать secret_key_base на Rails 4 + приложений в качестве своего secret_key. Вы можете изменить это и использовать свой собственный секрет, изменив устройство.инициализатор РБ.
пошел к
config/secrets.yml
и изменилproduction
значение.перед:
production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
после:
production: secret_key_base: string of charaters
конечно, это должно быть установлено в переменную окружения, которую я установлю позже, но это на по крайней мере, он работает. Я получил свою строку с помощью
bundle exec rake secret
.
проблема:
добавить ниже код config / инициализаторы / devise.РБ.
config.secret_key = '-- secret key --'
замените '-- secret key-- ' на свой собственный ключ. Я рекомендую хранить его в переменной ENV в целях безопасности.
может быть, ты не побежал
rails g devise:install
?под управлением
rails generate devise User
без предыдущей команды действительно вызывает эту проблему.
на
config/initializers/devise.rb
Я:config.secret_key = ENV["SECRET_KEY_BASE"] if Rails.env.production?
потому что если ты:
$ heroku config
вы увидите
secret_key_base
в режимеproduction
.
Я решаю свою проблему инициализатора с этим уродливым подходом:
config.secret_key = 'some1234keyq23' if Rails.env == 'production'
в config / initializers / devise.рубидий Теперь он работает как в производстве, так и в разработке !
я клонировал свой репозиторий на новую машину из git. Элемент
config/secrets.yml
файл был на моем .gitignore список, так что файл не существует, и Devise не создает файл.
я добавил файл, а затем повторно запустил
rails generate devise MODEL
и это сработало.
у меня такая же проблема. Проблема была вызвана этими строками в
routes.rb
:devise_for :users, :skip => [:registrations] as :user do get 'users/edit' => 'devise/registrations#edit', :as => 'edit_user_registration' put 'users' => 'devise/registrations#update', :as => 'user_registration' get '/users/sign_out' => 'devise/sessions#destroy' end
Я прокомментировал их и после этого я бегу:
$ rails generate devise:install
и он оценил отлично. И после этого я раскомментировал маршруты.
проверьте, если ваш
config\initializers\secret_token.rb
есть:YourAppName::Application.config.secret_token
должно быть:
YourAppName::Application.config.secret_key_base
Ну, я следил за этим сообщением и пробовал почти все здесь. Я добавил ключ к
devise.rb
. Но я все еще получаю ту же ошибку.может быть, глупый ответ, но все, что мне нужно было сделать, это нажать
devise.rb
ключ к репозиторию.
исправления:
на рабочем сервере:
sudo -H nano /etc/environment
затем в Файл Добавить:
export SECRET_KEY_BASE="yourkey" export DEMO03_DATABASE_PASSWORD="yourpass"
чтобы установить это постоянно, и во всей системе (все пользователи, все процессы) добавить переменную set
в локальном проекте
devise.rb
file:config.secret_key = ENV["SECRET_KEY_BASE"] if Rails.env.production?
техническое описание:
- Ubuntu 16.04
- Devise (4.2.0)
- рельсы 5.0.1
- Капистрано (3.7.1)
столкнулся с той же проблемой с рельсами 5.2.0 и разработать 4.4.1
поместите следующее в /config / initializers / devise.РБ
config.secret_key = Rails.application.credentials.secret_key_base
пытается дать более полный ответ на выше: Как уже упоминалось в devise_auth_token gem документация
...Кроме того, вы можете настроить другие аспекты разработки вручную создание традиционного устройства.файл в РБ
config/initializers/devise.rb
. Вот несколько примеров того, что вы можете сделайте в этом файле:Devise.setup do |config| # The e-mail address that mail will appear to be sent from # If absent, mail is sent from "please-change-me-at-config-initializers-devise@example.com" config.mailer_sender = "support@myapp.com" # If using rails-api, you may want to tell devise to not use ActionDispatch::Flash # middleware b/c rails-api does not include it. # See: http://stackoverflow.com/q/19600905/806956 config.navigational_formats = [:json] end
у меня была такая же проблема, и, как и здесь, я создал инициализатор devise и добавил
config.secret_key = ENV['DEVISE_SECRET_KEY']
линия к нему.
Я не знаю правильное решение, но это работает. Ты можешь попробовать. Я клонировал свой проект из моей учетной записи GitLab, и когда я запускаю на своем локальном сервере, у меня появляется сообщение об ошибке:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
открыть
config/initializers/devise.rb
и добавить эту строку
config.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
эта строка кода решена моя проблема.