Je développe une application Rails 4 en utilisant la gemme Active Admin pour le back-end d'administration. L'administrateur actif utilise à son tour Devise pour l'authentification des utilisateurs. Maintenant, lorsque j'essaie de déployer l'application en utilisant capistrano
le serveur VPS, j'obtiens l'erreur ci-dessous:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Une recherche Google ne fait pas grand-chose pour cette erreur. Des suggestions pourquoi il lance une erreur? Dois-je ajouter la clé secrète à l' devise
initialiseur, car je ne trouve aucun endroit pour définir une telle clé de configuration initializers/devise.rb
?
ruby-on-rails
devise
scarver2
la source
la source
secret key
. De plus, si vous exécutez une nouvelle installation, l'application doit s'en occuper. Grâce au ticket sur github.com/plataformatec/devise/issues/2554, cela a été résolu.Réponses:
J'ai couru
bundle update
ce matin et j'ai commencé à avoir la même erreur.Je l'ai ajouté en tant que ligne
config/initializers/devise.rb
et l'erreur a été corrigée.Cela semble être le commit qui l'a introduit.
la source
SECRET_KEY_BASE
variable d'environnement au lieu de la copiersecrets.yml
afin de ne pas oublier que votre "clé secrète" n'est pas assez secret!Ce qui a fonctionné pour moi sur Rails 4.1 et Devise 3.2.4 est dans
config/initializers/devise.rb
:la source
figaro
gemmes:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
Depuis Devise 3.2.3 pour les applications Rails 4+, l'emplacement du paramètre de clé est par défaut YourAppName :: Application.config.secret_key_base trouvé dans config / initializers / secret_token.rb
la source
Cela a résolu mon problème:
Ajoutez le code ci-dessous à votre fichier config / initializers / devise.rb .
Remplacez «- clé secrète» par votre propre clé. Je recommande de le stocker dans une variable ENV à des fins de sécurité.
la source
ENV["your_particular_secret_key_name"]
. Ensuite, votre application référence vos clés de manière dynamique. Mais vous avez gitignoré vos clés, alors comment les amener dans votre environnement de production? Vous les poussez directement de votre environnement de développement local vers heroku en utilisant figaro, et vos clés secrètes finiront par devenir des variables d'environnement sur herokuSelon le changelog :
Je suis allé
config/secrets.yml
et j'ai changé laproduction
valeur.Avant:
Après:
Bien sûr, cela devrait être défini sur la variable d'environnement, que je définirai plus tard, mais cela a au moins fait fonctionner. J'ai obtenu ma chaîne en utilisant
bundle exec rake secret
.la source
Se pourrait-il que vous n'ayez pas couru
rails g devise:install
?L'exécution
rails generate devise User
sans la commande précédente provoque ce problème.la source
rails g devise user
je l'ai fait avant d'essayer de créer la table des utilisateurs et de migrer. Cela a résolu le problème.Dans
config/initializers/devise.rb
je mets:Parce que si vous mettez:
Vous verrez un
secret_key_base
pour le modeproduction
.la source
Je résous mon problème d'initialisation avec cette vilaine approche:
dans config / initializers / devise.rb Cela fonctionne maintenant aussi bien en production qu'en développement!
la source
J'ai cloné mon référentiel sur une nouvelle machine depuis git. le
fichier é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 relancé
et cela a fonctionné.
la source
secrets.yml
à mon.gitignore
fichier. Je ne lui ai pas donné une lecture approfondie et j'ai été vaguement impressionné par le fait qu'il comprenait bien plus que le.gitignore
fichier Rails généré . : facepalm:Vérifiez si votre
config\initializers\secret_token.rb
a:Ça devrait être:
la source
J'ai le même problème. Le problème a été causé par ces lignes dans
routes.rb
:Je les ai commentés et après cela, je cours:
Et il a parfaitement évalué. Et après cela, je n'ai pas commenté les itinéraires.
la source
rails generate devise:install
avant de créer mon premier modèle de conception. Selon cette réponse, commentez la ligne devise_for dans les routes, puis exécutez la commande generate, et cela fonctionne.devise_for
ligne pour obtenir mon rake db: migrer vers le travail .. aucune idée de pourquoiEh bien, j'ai suivi ce post et essayé presque tout ici. J'ai ajouté la clé de
devise.rb
. Mais j'obtenais toujours la même erreur.Peut-être une réponse stupide, mais tout ce que j'avais à faire était de pousser la
devise.rb
clé vers le référentiel.la source
Réparer:
Dans le serveur de production:
Puis dans le fichier, ajoutez:
pour définir cela de manière permanente et à l'échelle du système (tous les utilisateurs, tous les processus), ajouter une variable d'ensemble
Dans le
devise.rb
fichier de projet local :Détails techniques:
la source
Ran dans le même problème avec Rails 5.2.0 et Devise 4.4.1
Déposez ce qui suit dans /config/initializers/devise.rb
la source
Essayer de donner une réponse un peu plus complète à celles ci-dessus: Comme mentionné dans la documentation du gem devise_auth_token
J'ai eu le même problème, et comme indiqué ici, j'ai créé l'initialiseur de périphérique et y ai ajouté la
config.secret_key = ENV['DEVISE_SECRET_KEY']
ligne.la source
Je ne connais pas la bonne solution mais ça marche. Tu peux l'essayer. J'ai été cloné mon projet à partir de mon compte GitLab et lorsque je l'exécute sur mon serveur local, j'ai un message d'erreur:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
Ouvrez
config/initializers/devise.rb
et ajoutez cette ligneconfig.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
Cette ligne de code est résolu mon problème.
la source
<%= %>
comme interpolation de chaîne. Votre clé sera alors littéralement ce que vous avez tapé dans la chaîne littérale' what ever the %he!@#$ you type here is your key no matter what characters'