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



Answers

在Rails 4.1和Devise 3.2.4上對我config/initializers/devise.rb是在config/initializers/devise.rb

config.secret_key = ENV['DEVISE_SECRET_KEY'] if Rails.env.production?
Question

我正在開發一個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




我用這種醜陋的方法解決了我的初始化問題:

config.secret_key = 'some1234keyq23' if Rails.env == 'production'

在config / initializers / devise.rb中它現在可以在生產和開發中使用!




試圖給出一個更完整的答案以上的答案:正如devise_auth_token gem的documentation提到的那樣

...此外,您可以通過在config/initializers/devise.rb手動創建傳統的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://.com/q/19600905/806956  
config.navigational_formats = [:json] end

我遇到了同樣的問題,並且像這裡config.secret_key = ENV['DEVISE_SECRET_KEY']那樣,我創建了設計初始化程序,並將config.secret_key = ENV['DEVISE_SECRET_KEY']行添加到它。




那麼,我一直在關注這個帖子,並嘗試幾乎所有的東西。 我已將關鍵字添加到devise.rb 。 但我仍然遇到同樣的錯誤。

也許是一個愚蠢的答案,但我所要做的只是將devise.rb鍵推devise.rb存儲庫。




檢查你的config\initializers\secret_token.rb是否有:

YourAppName::Application.config.secret_token

它應該是:

YourAppName::Application.config.secret_key_base



這解決了我的問題:

將下面的代碼添加到你的config / initializers / devise.rb文件中。

config.secret_key = '-- secret key --' 

用你自己的密鑰替換' - 密鑰 - '。 為了安全起見,我建議將它存儲在ENV變量中。




難道是,你沒有運行rails g devise:install

運行rails generate devise User沒有以前的命令確實會導致此問題。






Links