rails gema función example español ejemplos cuál ruby-on-rails devise

ruby-on-rails - gema - devise rails español



No se configuró la clave secreta (15)

A partir de Devise 3.2.3 para aplicaciones Rails 4+, la ubicación de configuración de la clave se establece de manera predeterminada en YourAppName::Application.config.secret_key_base encuentra en config / initializers / secret_token.rb

Estoy desarrollando una aplicación de Rails 4 usando la gema de Active Admin para la administración de back-end. Active Admin a su vez usa Devise para autenticación de usuario. Ahora, cuando intento implementar la aplicación usando 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? ¿Debería agregar la clave secreta para devise inicializador, ya que no puedo encontrar ningún lugar para establecer dicha clave de configuración en initializers/devise.rb ?


Bueno, he estado siguiendo esta publicación e intenté casi todo aquí. He agregado la clave para devise.rb . Pero todavía estaba recibiendo el mismo error.

Tal vez una respuesta estúpida, pero todo lo que tenía que hacer era presionar la tecla devise.rb del repositorio.


Cloné mi repositorio en una máquina nueva de git. los

config/secrets.yml

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

rails generate devise MODEL

Y funcionó.


Compruebe si su config/initializers/secret_token.rb tiene:

YourAppName::Application.config.secret_token

Debería ser:

YourAppName::Application.config.secret_key_base


En config/initializers/devise.rb pongo:

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

Porque si pones:

$ heroku config

Verás una secret_key_base para la production modo.


Esto resolvió mi problema:

Agregue el siguiente código a su archivo config / initializers / devise.rb .

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

Reemplace ''- clave secreta--'' con su propia clave. Recomiendo guardarlo en una variable ENV por razones de seguridad.


Fijar:

  1. En el servidor de producción:

    sudo -H nano /etc/environment

  2. Luego en el archivo agrega:

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

    para establecer esto permanentemente, y todo el sistema (todos los usuarios, todos los procesos) agregar conjunto variable

  3. En el archivo local devise.rb proyecto:

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

Detalles técnicos:

  • Ubuntu 16.04
  • Idear (4.2.0)
  • rieles 5.0.1
  • capistrano (3.7.1)

Intentando dar una respuesta algo más completa a las anteriores: como se menciona en la documentación de la gema devise_auth_token

... Además, puede configurar otros aspectos del diseño creando manualmente el archivo tradicional devise.rb en config/initializers/devise.rb . Aquí hay algunos ejemplos de lo que puede hacer en este archivo:

Devise.setup do |config| # The e-mail address that mail will appear to be sent from # If absent, mail is sent from "[email protected]" config.mailer_sender = "[email protected]" # 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

Tuve el mismo problema, y ​​como mencioné aquí, creé el inicializador de config.secret_key = ENV[''DEVISE_SECRET_KEY''] línea config.secret_key = ENV[''DEVISE_SECRET_KEY''] .


Lo que funcionó para mí en Rails 4.1 y Devise 3.2.4 es en config/initializers/devise.rb :

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


Podría ser que no hayas ejecutado rails g devise:install ?

La ejecución de rails generate devise User sin el comando anterior que causa este problema.


Resuelvo mi problema de inicializador con este enfoque desagradable:

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

en config / initializers / devise.rb ¡Ahora funciona tanto en producción como en desarrollo!


Se encontró con el mismo problema con Rails 5.2.0 y Devise 4.4.1

Coloque lo siguiente en /config/initializers/devise.rb

config.secret_key = Rails.application.credentials.secret_key_base


Según el changelog :

Devise usará la base de secret_key_base en las aplicaciones de Rails 4+ como su clave secreta. Puede cambiar esto y usar su propio secreto al cambiar el inicializador devise.rb.

Fui a config/secrets.yml y cambié el valor de production .

Antes de:

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

Después:

production: secret_key_base: string of charaters

Por supuesto, eso debería establecerse en la variable de entorno, que estableceré más adelante, pero al menos la puso en funcionamiento. Obtuve mi cadena usando el bundle exec rake secret .


Tengo el mismo problema. El problema fue causado por estas líneas en 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

Los comenté y después de eso corrí:

$ rails generate devise:install

Y ha evaluado perfectamente. Y después de eso, las rutas sin comentarios.


bundle update esta mañana y comencé a recibir el mismo error.

Lo agregué como una línea en config/initializers/devise.rb y se config/initializers/devise.rb el error.

Este parece ser el commit que lo introdujo.