Ich entwickle eine Rails 4-App mit dem Edelstein Active Admin für das Administrations-Backend. Active Admin wiederum verwendet Devise zur Benutzerauthentifizierung. Wenn ich jetzt versuche, die App mithilfe capistrano
auf dem VPS-Server bereitzustellen, wird der folgende Fehler angezeigt:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Eine Google-Suche hilft nicht viel für diesen Fehler. Irgendwelche Vorschläge, warum es einen Fehler auslöst? Sollte ich den geheimen Schlüssel zum devise
Initialisierer hinzufügen , da ich keinen Ort finde, an dem ich einen solchen Konfigurationsschlüssel festlegen kann initializers/devise.rb
?
ruby-on-rails
devise
scarver2
quelle
quelle
secret key
. Auch wenn Sie eine Neuinstallation ausführen, sollte sich die Anwendung darum kümmern. Dank des Tickets unter github.com/plataformatec/devise/issues/2554 wurde es gelöst.Antworten:
Ich bin
bundle update
heute Morgen gelaufen und habe den gleichen Fehler bekommen.Ich habe es als Zeile hinzugefügt
config/initializers/devise.rb
und der Fehler wurde behoben.Dies scheint das Commit zu sein , das es eingeführt hat.
quelle
SECRET_KEY_BASE
Umgebungsvariable direkt festzulegen, anstatt sie zu kopieren,secrets.yml
damit Sie nicht vergessen, dass Ihr "geheimer Schlüssel" ist nicht geheim genug!Was für mich auf Rails 4.1 und Devise 3.2.4 funktioniert hat, ist in
config/initializers/devise.rb
:quelle
figaro
Edelstein verwenden:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
Ab Devise 3.2.3 für Rails 4+ -Anwendungen ist der Speicherort für die Schlüsseleinstellung standardmäßig YourAppName :: Application.config.secret_key_base in config / initializers / secret_token.rb
quelle
Dies löste mein Problem:
Fügen Sie den folgenden Code zu Ihrer Datei config / initializers / devise.rb hinzu .
Ersetzen Sie '- geheimer Schlüssel--' durch Ihren eigenen Schlüssel. Ich empfehle, es aus Sicherheitsgründen in einer ENV-Variablen zu speichern.
quelle
ENV["your_particular_secret_key_name"]
. Anschließend verweist Ihre App dynamisch auf Ihre Schlüssel. Aber Sie haben Ihre Schlüssel gitigniert. Wie bringen Sie sie in Ihre Produktionsumgebung? Sie schieben sie mit figaro direkt von Ihrer lokalen Entwicklungsumgebung nach Heroku, und Ihre geheimen Schlüssel werden als Umgebungsvariablen auf Heroku angezeigtWie pro Changelog :
Ich ging zu
config/secrets.yml
und änderte denproduction
Wert.Vor:
Nach dem:
Das sollte natürlich auf die Umgebungsvariable gesetzt werden, die ich später setzen werde, aber das hat es zumindest zum Laufen gebracht. Ich habe meine Schnur mit
bundle exec rake secret
.quelle
Könnte es sein, dass du nicht gerannt bist
rails g devise:install
?Das Ausführen
rails generate devise User
ohne den vorherigen Befehl verursacht dieses Problem.quelle
rails g devise user
bevor ich versuchte, die Benutzertabelle zu erstellen und zu migrieren. Dies hat das Problem behoben.In
config/initializers/devise.rb
ich legte:Denn wenn Sie sagen:
Sie sehen ein
secret_key_base
für den Modusproduction
.quelle
Ich löse mein Initialisierungsproblem mit diesem hässlichen Ansatz:
in config / initializers / devise.rb Es funktioniert jetzt sowohl in der Produktion als auch in der Entwicklung!
quelle
Ich habe mein Repository von git auf einen neuen Computer geklont. Das
Die Datei befand sich in meiner .gitignore-Liste, sodass diese Datei nicht vorhanden war und Devise die Datei nicht erstellt.
Ich habe die Datei hinzugefügt und dann erneut ausgeführt
und es hat funktioniert.
quelle
secrets.yml
, meine.gitignore
Datei zu ergänzen. Ich habe es nicht gründlich durchgelesen und war vage beeindruckt, dass es so viel mehr als die generierte Rails-.gitignore
Datei enthielt . : facepalm:Überprüfen Sie, ob Ihre
config\initializers\secret_token.rb
hat:Es sollte sein:
quelle
Ich habe das gleiche Problem. Das Problem wurde durch folgende Zeilen verursacht
routes.rb
:Ich habe sie kommentiert und danach renne ich:
Und es hat perfekt ausgewertet. Und danach habe ich Routen auskommentiert.
quelle
rails generate devise:install
vor dem Erstellen meines ersten Entwurfsmodells. Kommentieren Sie gemäß dieser Antwort die Zeile devise_for in den Routen aus und führen Sie dann den Befehl generate aus. Dies funktioniert.devise_for
Zeile auskommentiert, um meine Rake-Datenbank zu erhalten: zur Arbeit migrieren. Keine Ahnung warumNun, ich bin diesem Beitrag gefolgt und habe hier fast alles versucht. Ich habe den Schlüssel hinzugefügt
devise.rb
. Aber ich bekam immer noch den gleichen Fehler.Vielleicht eine dumme Antwort, aber alles, was ich tun musste, war, den
devise.rb
Schlüssel zum Repository zu drücken .quelle
Fix:
Auf dem Produktionsserver:
Dann in der Datei hinzufügen:
Um dies dauerhaft und systemweit (alle Benutzer, alle Prozesse) festzulegen, fügen Sie eine Set-Variable hinzu
In der lokalen Projektdatei
devise.rb
:Technische Details:
quelle
Ich bin mit Rails 5.2.0 und Devise 4.4.1 auf die gleichen Probleme gestoßen
Legen Sie Folgendes in /config/initializers/devise.rb ab
quelle
Der Versuch, eine etwas vollständigere Antwort auf die oben genannten Fragen zu geben: Wie in der Dokumentation zum Juwel devise_auth_token erwähnt
Ich hatte das gleiche Problem, und wie hier beschrieben, habe ich den Geräteinitialisierer erstellt und die
config.secret_key = ENV['DEVISE_SECRET_KEY']
Zeile hinzugefügt .quelle
Ich kenne keine richtige Lösung, aber es funktioniert. Du kannst es versuchen. Ich habe mein Projekt von meinem GitLab-Konto geklont und wenn ich es auf meinem lokalen Server ausführe, wird eine Fehlermeldung angezeigt:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
Öffnen
config/initializers/devise.rb
Sie diese Zeile und fügen Sie sie hinzuconfig.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
Diese Codezeile hat mein Problem gelöst.
quelle
<%= %>
als String-Interpolation. Ihr Schlüssel wird dann buchstäblich das sein, was Sie in das Zeichenfolgenliteral eingegeben haben' what ever the %he!@#$ you type here is your key no matter what characters'