101 votes

La clé secrète du dispositif n'a pas été définie

Je développe une application Rails 4 utilisant la gemme Active Admin pour le back-end d'administration. Active Admin utilise à son tour Devise pour l'authentification des utilisateurs. Maintenant, lorsque j'essaie de déployer l'application en utilisant capistrano sur le serveur VPS, j'obtiens l'erreur suivante :

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

Une recherche sur Google ne donne pas grand-chose pour cette erreur. Avez-vous une idée de la raison pour laquelle cette erreur se produit ? Devrais-je ajouter la clé secrète à devise car je ne trouve pas d'endroit pour définir une telle clé de configuration dans le fichier initializers/devise.rb ?

88voto

Grey Mahagone Points 113

J'ai couru bundle update ce matin et j'ai commencé à avoir la même erreur.

Je l'ai ajouté comme une ligne dans config/initializers/devise.rb et l'erreur a été corrigée.

Cela semble être le commettre qui l'a introduit.

38voto

Paul Odeon Points 534

Ce qui a fonctionné pour moi sur Rails 4.1 et Devise 3.2.4 est en config/initializers/devise.rb :

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

33voto

Brandon Cook Points 419

A partir de Devise 3.2.3 pour les applications Rails 4+, l'emplacement du paramètre clé est par défaut le suivant VotreNomDePoste::Application.config.secret_key_base trouvé dans config/initializers/secret_token.rb

12voto

Cela a résolu mon problème :

Ajoutez le code ci-dessous à votre config/initializers/devise.rb fichier.

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

Remplacez '-- secret key--' par votre propre clé. Je recommande de la stocker dans une variable ENV pour des raisons de sécurité.

12voto

Eric Points 353

Conformément à journal des modifications :

Devise utilisera la base de données secret_key des applications Rails 4+ comme clé secrète. Vous pouvez changer cela et utiliser votre propre secret en modifiant l'initialisateur devise.rb.

Je suis allé à config/secrets.yml et a modifié le production valeur.

Avant :

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

Après :

production: 
  secret_key_base: string of charaters

Bien sûr, cela devrait être défini par la variable d'environnement, que je définirai plus tard, mais cela a au moins permis de le faire fonctionner. J'ai obtenu ma chaîne de caractères en utilisant bundle exec rake secret .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X