Разработать секретный ключ не был установлен


Я разрабатываю приложение 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 94

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 ключ к репозиторию.

исправления:

  1. на рабочем сервере:

    sudo -H nano /etc/environment
    
  2. затем в Файл Добавить:

    export SECRET_KEY_BASE="yourkey"
    export DEMO03_DATABASE_PASSWORD="yourpass"
    

    чтобы установить это постоянно, и во всей системе (все пользователи, все процессы) добавить переменную set

  3. в локальном проекте 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"] %>'

эта строка кода решена моя проблема.