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 ?

10voto

sascha.daniels Points 41

Serait-ce possible, que vous n'ayez pas couru rails g devise:install ?

Running rails generate devise User sans la commande précédente cause ce problème.

10voto

rld Points 691

Sur config/initializers/devise.rb J'ai mis :

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

Parce que si vous mettez :

$ heroku config

Vous verrez un secret_key_base pour le mode production .

6voto

Andrey Yasinishyn Points 821

Je résous mon problème d'initialisation avec cette approche laide :

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

dans config/initializers/devise.rb Cela fonctionne maintenant aussi bien en production qu'en développement !

6voto

jgrumps Points 117

J'ai cloné mon dépôt sur une nouvelle machine depuis git. Le site

config/secrets.yml 

était sur ma liste .gitignore, donc ce fichier n'existait pas, et Devise ne crée pas le fichier.

J'ai ajouté le fichier, puis j'ai relancé

rails generate devise MODEL

et ça a marché.

5voto

zurbergram Points 96

Vérifiez si votre config\initializers\secret_token.rb a :

YourAppName::Application.config.secret_token

Il devrait l'être :

YourAppName::Application.config.secret_key_base

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