Estoy desarrollando una aplicación Rails 4 utilizando la gema Active Admin para el back-end de administración. Active Admin, a su vez, utiliza Devise para la autenticación de usuarios. Ahora, cuando intento implementar la aplicación capistrano
en el servidor VPS, aparece el siguiente error:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Una búsqueda en Google no hace mucho por este error. ¿Alguna sugerencia de por qué está arrojando un error? ¿Debo agregar la clave secreta al devise
inicializador, ya que no puedo encontrar ningún lugar para configurar dicha clave de configuración initializers/devise.rb
?
ruby-on-rails
devise
scarver2
fuente
fuente
secret key
. Además, si está ejecutando una instalación nueva, la aplicación debería encargarse de eso. Gracias al ticket en github.com/plataformatec/devise/issues/2554 se ha resuelto.Respuestas:
Corrí
bundle update
esta mañana y comencé a recibir el mismo error.Lo agregué como una línea
config/initializers/devise.rb
y se solucionó el error.Este parece ser el compromiso que lo introdujo.
fuente
SECRET_KEY_BASE
variable de entorno en lugar de copiarlasecrets.yml
para que no olvide su "clave secreta" no es lo suficientemente secreto!Lo que funcionó para mí en Rails 4.1 y Devise 3.2.4 está en
config/initializers/devise.rb
:fuente
figaro
gema:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
A partir de Devise 3.2.3 para las aplicaciones Rails 4+, la ubicación de la configuración de clave predeterminada es YourAppName :: Application.config.secret_key_base que se encuentra en config / initializers / secret_token.rb
fuente
Esto resolvió mi problema:
Agregue el código siguiente a su archivo config / initializers / devise.rb .
Reemplace '- clave secreta--' con su propia clave. Recomiendo almacenarlo en una variable ENV por motivos de seguridad.
fuente
ENV["your_particular_secret_key_name"]
. Luego, su aplicación hace referencia a sus claves de forma dinámica. Pero ha ignorado sus claves, entonces, ¿cómo las lleva a su entorno de producción? Los empuja directamente desde su entorno de desarrollo local a heroku usando figaro, y sus claves secretas terminarán como variables de entorno en herokuSegún el registro de cambios :
Fui a
config/secrets.yml
y cambié elproduction
valor.Antes de:
Después:
Por supuesto, eso debería establecerse en la variable de entorno, que estableceré más adelante, pero esto al menos lo ejecutó. Obtuve mi cuerda usando
bundle exec rake secret
.fuente
¿Podría ser que no corriste
rails g devise:install
?Ejecutar
rails generate devise User
sin el comando anterior causa este problema.fuente
rails g devise user
antes de intentar crear la tabla de usuarios y migrar. Esto solucionó el problema.En
config/initializers/devise.rb
pongo:Porque si pones:
Verá un
secret_key_base
para el modoproduction
.fuente
Resuelvo mi problema de inicializador con este desagradable enfoque:
en config / initializers / devise.rb ¡Ahora funciona tanto en producción como en desarrollo!
fuente
Cloné mi repositorio en una nueva máquina de git. los
El archivo estaba en mi lista .gitignore, por lo que ese archivo no existía y Devise no crea el archivo.
Agregué el archivo, luego volví a ejecutar
Y funcionó.
fuente
secrets.yml
a mi.gitignore
archivo. No le di una lectura completa y me impresionó vagamente que incluyera mucho más que el.gitignore
archivo Rails generado . : facepalm:Compruebe si
config\initializers\secret_token.rb
tiene:Debería ser:
fuente
Tengo el mismo problema. El problema fue causado por estas líneas en
routes.rb
:Los comenté y después de eso ejecuto:
Y ha evaluado perfectamente. Y después de eso descomenté las rutas.
fuente
rails generate devise:install
antes de crear mi primer modelo de dispositivo. Según esta respuesta, comentó la línea devise_for en las rutas, luego ejecute el comando generate y funciona.devise_for
línea para obtener mi rake db: migrar al trabajo ... aunque no tengo idea de por quéBueno, he estado siguiendo esta publicación y probé casi todo aquí. He agregado la clave a
devise.rb
. Pero seguía recibiendo el mismo error.Quizás una respuesta estúpida, pero todo lo que tenía que hacer era presionar la
devise.rb
clave del repositorio.fuente
Reparar:
En el servidor de producción:
Luego en el archivo agregue:
para establecer esto de forma permanente, y en todo el sistema (todos los usuarios, todos los procesos) agregue la variable de conjunto
En el
devise.rb
archivo del proyecto local :Detalles técnicos:
fuente
Me encontré con el mismo problema con Rails 5.2.0 y Devise 4.4.1
Coloque lo siguiente en /config/initializers/devise.rb
fuente
Tratando de dar una respuesta algo más completa a los de arriba: Como se mencionó en la gema de devise_auth_token documentación
Tuve el mismo problema y, como se menciona aquí, creé el inicializador del dispositivo y le agregué la
config.secret_key = ENV['DEVISE_SECRET_KEY']
línea.fuente
No conozco la solución correcta, pero está funcionando. Puedes probarlo. Me clonaron mi proyecto de mi cuenta de GitLab y cuando lo ejecuto en mi servidor local, tengo un mensaje de error:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
Abre
config/initializers/devise.rb
y agrega esta líneaconfig.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
Esta línea de código ha resuelto mi problema.
fuente
<%= %>
como interpolación de cadenas. Su clave será literalmente lo que ha escrito dentro del literal de cadena' what ever the %he!@#$ you type here is your key no matter what characters'