Я разрабатываю приложение Rails 4 с использованием гема Active Admin для административной части. Active Admin, в свою очередь, использует Devise для аутентификации пользователей. Теперь, когда я пытаюсь развернуть приложение, используя 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
?
ruby-on-rails
devise
шарвер2
источник
источник
secret key
. Также, если вы запускаете новую установку, приложение должно позаботиться об этом. Благодаря тикету на github.com/plataformatec/devise/issues/2554 он был решен.Ответы:
Я побежал
bundle update
сегодня утром и начал получать ту же ошибку.Я добавил это как строку,
config/initializers/devise.rb
и ошибка была исправлена.Похоже, это коммит, который его ввел.
источник
SECRET_KEY_BASE
переменной среды, а не копировать ее,secrets.yml
чтобы вы не забыли, что ваш «секретный ключ» это еще не секрет!То, что у меня работало на Rails 4.1 и Devise 3.2.4, находится в
config/initializers/devise.rb
:источник
figaro
драгоценный камень:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
Начиная с Devise 3.2.3 для приложений Rails 4+, местоположение ключевой настройки по умолчанию - YourAppName :: Application.config.secret_key_base, найденное в config / initializers / secret_token.rb
источник
Это решило мою проблему:
Добавьте приведенный ниже код в свой файл config / initializers / devise.rb .
Замените '- secret key--' своим собственным ключом. Я рекомендую хранить его в переменной ENV в целях безопасности.
источник
ENV["your_particular_secret_key_name"]
. Затем ваше приложение динамически ссылается на ваши ключи. Но вы используете gitignored свои ключи, так как же их перенести в производственную среду? Вы отправляете их прямо из вашей локальной среды разработки в heroku с помощью figaro, и ваши секретные ключи в конечном итоге превращаются в переменные среды на herokuСогласно журналу изменений :
Я пошел
config/secrets.yml
и изменилproduction
значение.Перед:
После:
Конечно, это должно быть установлено в переменной окружения, которую я установлю позже, но это, по крайней мере, запустило ее. Я получил свою строку, используя
bundle exec rake secret
.источник
Неужели ты не сбежал
rails g devise:install
?Запуск
rails generate devise User
без предыдущей команды вызывает эту проблему.источник
rails g devise user
до того, как попытался создать таблицу пользователей и выполнить миграцию. Это устранило проблему.В
config/initializers/devise.rb
I поставил:Потому что если поставить:
Вы увидите значок
secret_key_base
для режимаproduction
.источник
Я решаю проблему с инициализатором с помощью этого уродливого подхода:
в config / initializers / devise.rb Теперь он работает как в производстве, так и в разработке!
источник
Я клонировал свой репозиторий на новую машину из git. В
файл был в моем списке .gitignore, поэтому этот файл не существует, и Devise не создает его.
Я добавил файл, затем снова запустил
и это сработало.
источник
secrets.yml
в мой.gitignore
файл. Я не стал внимательно его читать и был слегка впечатлен тем, что он включает гораздо больше, чем сгенерированный.gitignore
файл Rails . : facepalm:Проверьте, есть ли у вас
config\initializers\secret_token.rb
:Так должно быть:
источник
У меня такая же проблема. Проблема была вызвана этими строками в
routes.rb
:Я их прокомментировал и после этого бегу:
И это оценено отлично. И после этого раскомментировал маршруты.
источник
rails generate devise:install
до создания моей первой модели разработки. В соответствии с этим ответом закомментировал строку devise_for в маршрутах, затем запустите команду генерации, и она работает.devise_for
строку, чтобы получить мой rake db: migrate to work .. хотя понятия не имею, почемуЧто ж, я слежу за этим постом и пробовал здесь почти все. Я добавил ключ в
devise.rb
. Но я все еще получал ту же ошибку.Может быть, глупый ответ, но все, что мне нужно было сделать, это вставить
devise.rb
ключ в репозиторий.источник
Исправить:
На производственном сервере:
Затем в файле добавьте:
чтобы установить это постоянно, и для всей системы (все пользователи, все процессы) добавить переменную набора
В локальном
devise.rb
файле проекта :Технические подробности:
источник
Попал в ту же проблему с Rails 5.2.0 и Devise 4.4.1
Поместите следующее в /config/initializers/devise.rb
источник
Попытка дать несколько более полный ответ на те выше: Как уже упоминалось в devise_auth_token драгоценного камня документации
У меня была та же проблема, и, как здесь упоминалось, я создал инициализатор устройства и добавил
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"] %>'
Эта строка кода решает мою проблему.
источник
<%= %>
как строковую интерполяцию. Тогда ваш ключ будет буквально тем, что вы ввели внутри строкового литерала' what ever the %he!@#$ you type here is your key no matter what characters'