Ich benutze es seit ungefähr einem Jahr. Ich mag den Workflow, den es bietet, aber ich finde, dass es keinen wirklichen Ärger gibt, auf die Daten zugreifen zu können. Ihre Optionen für die Arbeit mit der Datenbank sind:
Taps: In der Theorie erstellen Sie Ihre Datenbank, wie Sie wollen, lokal und verwenden Sie Taps, um sowohl Schema als auch Daten nach Heroku zu kopieren. In der Praxis ist es meistens erstaunlich gut. Allerdings beschäftige ich mich gerade mit der Bereinigung nach dem Taps, übersetzte einige meiner Spalten schlecht und korrumpierte meine Daten.
Heroku-Konsole: Völlig in Ordnung für alle üblichen ActiveRecord Zeug, aber am nächsten, die Sie auf die Datenbank zugreifen können, ist ActiveRecord :: Base.connection.execute "einige sql". Wenn Sie sich wundern, dass Sie andere Tabellenbefehle wie diese ausführen, werden Sie wissen, dass Sie in Schwierigkeiten sind.
Sie bieten auch ein "Bundle" als eine Methode zum Sichern Ihrer App.Auf diese Weise können Sie Ihren gesamten Code und einen SQL-Dump der Datenbank herunterladen. Die Schwierigkeit besteht darin, dass es keinen direkten Datenbankzugriff gibt, da es keine Möglichkeit gibt, denselben sql-Dump zurück in die Datenbank zu laden, so dass Sie von dataloss wiederherstellen können, was für mich der Ausgangspunkt dieser Dump-Dateien ist. Alles, was Sie für das Bundle verwenden können, ist, eine neue Anwendung zu erstellen (heroku bundles: animate), eine aktuelle App nicht wiederherzustellen.
Ich würde gerne etwas falsch/falsch sein. Dies scheint ein merkwürdiger Fehler in dem am besten durchdachten Service zu sein, den ich kenne. Der Datenbankzugriff hat normalerweise nicht den Anschein, als ob er aufgibt, wenn das meiste, was Sie tun, so einfach gemacht wird.
Datenbankzugang ist für mich wie ein Feuerlöscher. Normalerweise keine große Sache, aber wenn es darauf ankommt, ist es sehr wichtig.
Eine weitere Frage, die nicht direkt auf diesem spezifischen Thread, aber sprechen über Heroku Bereitstellung und DB ist: Eine schlechte Seite zu Heroku schieben ist, dass ich den Code (und den Server automatisch neu starten) vor dem Ausführen meiner db-Migrationen schieben muss. Dies kann bei der Navigation der Website zu Fehlern führen ... Eine Lösung könnte der Wartungsmodus sein, aber ich möchte einen Weg ohne Nachteile haben und meine Webapps immer laufen lassen. Gibt es einen Weg? Zum Beispiel mit Capistrano: - Ich bereite den Code für die Bereitstellung in einem neuen Verzeichnis - Ich laufen (rückwärts) Migrationen - Ich swith Server auf das neue Verzeichnis ... und ich habe keine Ausfallzeit. – zetarun