Schienen secret_key_base nicht erkannt in der Produktion
So versuche ich für die Bereitstellung meiner rails-app in der Produktion. Wenn ich auf die Seite zu gehen bekomme ich einen 500 Fehler. Wenn ich an meine error logs bekomme ich folgende Fehlermeldung:
Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`)
Ich bin Rails 4.1 und meine config/Geheimnisse.yml sieht wie folgt aus:
development:
secret_key_base: <development key>
test:
secret_key_base: <test key>
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Ich lief rake Geheimnis um den Schlüssel zu Holen, und stellen Sie das export-in mein bash_profile und bezogen es. Ich lief rake assets:precompile erfolgreich. Habe ich trotzdem noch immer dieser Fehler. Irgendwelche Ideen?
Update: ich habe versucht, zu aktualisieren, die Fehlermeldung zur Verfügung gestellt zu geben, etwas bessere Informationen....und die Meldung nicht neu. Ich habe dann versucht, indem Sie die Taste direkt auf die yml-Datei anstelle von Umgebungsvariablen und immer noch keine Würfel. Im Laufenden auf hostmonster, so kann ich nicht den server neu starten.....aber etwas sagt mir, das ist, was getan werden muss...
Update 2: Nach dem schlafen durch die Nacht, es scheint, dass dieses Problem kein Thema mehr ist. Es muss irgendeine Art von caching. Nun mein Problem ist, dass Sie versuchen, verwenden Sie eine alte config, die ich geändert habe Tage für meine Datenbank. Wenn ich herausfinden, wie zu umgehen, den cache werde ich es hier posten und markieren Sie es als Antwort. Wenn jemand weiß, wie man es bitte lassen Sie mich wissen, und ich werde markieren Sie es als Antwort. Ich bin mit HostMonster meinem hosting und folgte den Schritten, die Sie auf Ihrer Website für das hosting von meine rails-app.
Du musst angemeldet sein, um einen Kommentar abzugeben.
YourAppName::Application.initialize!
genannt inconfig/environment.rb
können Sie nicht ändern Sie Ihre Einstellungen.Das problem ist nicht mit " ENV pseudo-hash. secret_key_base wird null, wenn in der ENV keine solche Taste.
touch tmp/restart.txt
aus Ihrem app-Basis-Verzeichnis. Einmal habe ich es abgeholt, mein neuer Informationen. Danke!Ich hatte das gleiche problem und ich gelöst, erstellen Sie eine Umgebungsvariable, um geladen werden jedes mal, logge ich mich auf dem Produktions-server und machte eine mini-Anleitung der Schritte zu konfigurieren, indem Sie sich selbst:
Also ich war mit Schienen 4.1 mit Unicorn v4.8.2 und als ich versuchte, die Bereitstellung der app es nicht richtig starten und in das Einhorn.log-Datei fand ich diese Fehlermeldung:
Nach ein wenig recherche fand ich, dass die Schienen 4.1 ändern Sie die Art und Weise zu verwalten, die secret_key, wenn wir also Lesen Sie die
secrets.yml
- Datei befindet sich aufexampleRailsProject/config/secrets.yml
(Sie Notwendigkeit, Sie zu ersetzen "exampleRailsProject" für Ihr Projekt-Namen) Sie suchen so etwas wie dieses:Dies bedeutet, dass die Schienen empfiehlt Ihnen, verwenden Sie eine Umgebungsvariable, für die secret_key_base in unsere Produktions-server, um die Behebung dieses Fehlers müssen Sie befolgen Sie diese Schritte zum erstellen einer Umgebungsvariablen für linux (in meinem Fall Ubuntu) in unserer Produktion server:
1.- In das terminal unserer Produktions-server, den Sie ausführen den folgenden Befehl eingeben:
Diese geben eine große Zeichenfolge mit Buchstaben und zahlen, das ist was Sie brauchen, so zu kopieren, dass die (wir beziehen uns auf diesen code als GENERATED_CODE).
2.1 - Nun, wenn wir die Anmeldung als Benutzer root auf unseren server wir brauchen, um diese Datei finden und öffnen:
Dann gehen wir zum Ende der Datei ("SHIFT + G" für das Kapital von G in VI)
Und schreiben wir unsere Umgebungsvariable mit unseren GENERATED_CODE (Taste "i" zu schreiben, in VI), sein, sicher sein, um in eine neue Zeile am Ende der Datei:
Geschrieben haben, den code speichern wir die änderungen und schließen die Datei (drücken wir "ESC" - Taste, und schreiben Sie dann ":x" und "ENTER" - Taste zum speichern und beenden von VI)
2.2 Aber wenn wir die Anmeldung als normal-user, nennen wir es example_user für das wesentliche, die wir brauchen, um eine dieser anderen Dateien:
Diese Dateien werden in der Reihenfolge der Wichtigkeit, das heißt, dass, wenn Sie die erste Datei, dann würden Sie nicht schreiben müssen, in die andere. Also, wenn Ihr diese 2 Dateien in Ihr Verzeichnis "~/.bash_profile" und "~/.Profil" Sie nur haben, um zu schreiben in die erste "~/.bash_profile", weil linux liest nur das eine und das andere wird ignoriert.
Dann gehen wir zum Ende der Datei ("SHIFT + G" für das Kapital von G in VI)
Und schreiben wir unsere Umgebungsvariable mit unseren GENERATED_CODE (Taste "i" zu schreiben, in VI), sein, sicher sein, um in eine neue Zeile am Ende der Datei:
Geschrieben haben, den code speichern wir die änderungen und schließen die Datei (drücken wir "ESC" - Taste, und schreiben Sie dann ":x" und "ENTER" - Taste zum speichern und beenden von VI)
3.-Wir können bestätigen, dass unsere Umgebungsvariable korrekt gesetzt ist unter linux mit diesem Befehl:
oder mit:
Wenn Sie diesen Befehl ausführen, wenn alles ok ist, wird es zeigen Ihnen die GENERATED_CODE, dass wir zuvor generierten. Schließlich mit all die Konfiguration, die Sie bereitstellen können ohne Probleme Ihre Rails-app mit Einhorn oder andere.
Wenn Sie nun schließen Sie Ihre shell-terminal und melden Sie sich wieder auf den Produktions-server müssen Sie diese Umgebungsvariable eingestellt und bereit, es zu benutzen.
Und Das Wars!! Ich hoffe, dieser mini-guide hilft Ihnen, diese zu lösen Fehler.