ruby-on-rails devise - 設計秘密密鑰沒有設置




8 Answers

今天早上我運行了bundle update並開始得到相同的錯誤。

我將它作為config/initializers/devise.rb的一行添加,並且錯誤已修復。

這似乎是介紹它的commit

new_with_session oauth

我正在開發一個Rails 4應用程序,使用用於管理後端的Active Admin gem。 Active Admin反過來使用Devise進行用戶認證。 現在,當我嘗試在VPS服務器上使用capistrano部署應用程序時,出現以下錯誤:

rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'

谷歌搜索對此錯誤沒有太大作用。 任何建議,為什麼它會拋出一個錯誤? 我應該添加密鑰來devise初始化器,因為我找不到在initializers/devise.rb設置此類配置密鑰的initializers/devise.rb







根據更新changelog

Devise將使用Rails 4+應用程序上的secret_key_base作為其secret_key。 您可以通過更改devise.rb初始值設定項來更改它並使用您自己的秘密。

我去了config/secrets.yml並更改了production值。

之前:

production: 
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

後:

production: 
  secret_key_base: string of charaters

當然,這應該設置為環境變量,我將在稍後設置它,但至少應該讓它運行。 我通過使用bundle exec rake secret獲得了我的字符串。




config/initializers/devise.rb我把:

config.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>' if Rails.env == 'production'

因為如果你把:

$ heroku config

你會看到模式productionsecret_key_base




我有同樣的問題。 問題是由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

它已經完美評估。 之後我沒有註意到路線。




我從git將我的存儲庫克隆到一台新機器上。 該

config/secrets.yml 

文件位於我的.gitignore列表中,因此該文件不存在,並且Devise不會創建該文件。

我添加了文件,然後重新運行

rails generate devise MODEL

它的工作。




固定:

  1. 在生產服務器中:

    sudo -H nano /etc/environment
    
  2. 然後在文件中添加:

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

    永久地設置這個,系統範圍(所有用戶,所有進程)添加設置變量

  3. 在本地項目devise.rb文件中:

    config.secret_key = ENV["SECRET_KEY_BASE"] if Rails.env.production?
    

技術細節:

  • Ubuntu 16.04
  • 設計(4.2.0)
  • 導軌5.0.1
  • capistrano(3.7.1)



在Rails 5.2.0和Devise 4.4.1中遇到同樣的問題

將以下內容放入/config/initializers/devise.rb

config.secret_key = Rails.application.credentials.secret_key_base



Related

ruby-on-rails devise