[ruby-on-rails] Devise Secret Key가 설정되지 않았습니다.

관리 백엔드 용 Active Admin gem을 사용하여 Rails 4 앱을 개발 중입니다. Active Admin은 사용자 인증을 위해 Devise를 사용합니다. 이제 capistranoVPS 서버에서 사용하여 앱을 배포하려고 하면 다음 오류가 발생합니다.

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 ?



답변

나는 bundle update오늘 아침에 뛰었고 같은 오류가 발생하기 시작했습니다.

나는 그것을 줄로 추가 config/initializers/devise.rb했고 오류가 수정되었습니다.

이것은 그것을 소개 한 커밋 인 것 같습니다 .


답변

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 에 키 설정 위치 기본값 레일 4 + 응용 프로그램에 대한 YourAppName :: Application.config.secret_key_base가 발견에서 설정 / 초기화 / secret_token.rb


답변

이것은 내 문제를 해결했습니다.

아래 코드를 config / initializers / devise.rb 파일에 추가 하십시오.

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

‘-secret key–‘를 자신의 키로 바꿉니다. 보안을 위해 ENV 변수에 저장하는 것이 좋습니다.


답변

에 따라 변경 내역 :

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.


답변

당신이 뛰지 않았을까요 rails g devise:install?

rails generate devise User이전 명령없이 실행 하면이 문제가 발생합니다.


답변

에서 config/initializers/devise.rbI 넣어 :

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

다음과 같이 넣으면

$ heroku config

secret_key_base모드에 대한가 표시 됩니다 production.