2013-09-27 7 views
6

Ich habe eine Ruby on Rails App auf Heroku mit einer Datenbank und einer Follower-Datenbank implementiert.Können Sie die Heroku-Konsole auf einer Follower-DB ausführen?

Normalerweise mache ich "heroku run rails console", um sich die Daten anzusehen, und ich frage mich, ob es einen Weg gibt, dass ich es in der Follower-Datenbank machen kann, damit ich nicht versehentlich Dinge schreibe/lösche. Ich weiß, das sollte einfach sein, aber ich konnte keine Dokumentation darüber finden.

Danke!

Antwort

-1

Ein Datenbank-Follower ist eine schreibgeschützte Kopie der Master-Datenbank, die mit den Master-Datenbankdaten auf dem neuesten Stand ist. Da Schreibvorgänge und andere Datenänderungen in der Master-Datenbank festgeschrieben sind, werden die Änderungen in Echtzeit an die Follower-Datenbanken gestreamt.

Quelle - https://devcenter.heroku.com/articles/heroku-postgres-follower-databases

+0

Danke, aber meine Frage ist, ob ich die Konsole auf der Folge Datenbank ausgeführt werden kann (so dass nur in der Konsole erlaubt liest, und ich lösche nicht aus Versehen auf dem Master). – David

4

Sie können dies von Ihrer lokalen Konsole. Starten Sie einfach:

rails console 

Dann brauchen Sie die Verbindungsinformationen für Ihre Follower-Datenbank auf Heroku. Sie können dies von https://postgres.heroku.com/databases/ abrufen. Klicken Sie einfach auf die entsprechende Datenbank und einen Hash mit den folgenden Informationen zu:

follower_db = {:adapter => "postgresql", 
:host  => "myhost", 
:username => "myuser", 
:password => "mypass", 
:database => "somedatabase"} 

nun auf diese Remote-Datenbank von der Konsole verbinden:

ActiveRecord::Base.establish_connection(follower_db) 

Jetzt jede Abfrage, die Sie in der Konsole eingeben werden läuft auf diese DB.

+3

Wenn Sie 'heroku config' ausführen, können Sie den Namen des Follower herausfinden und ihn dann direkt im Code aufrufen:' ActiveRecord :: Base.establish_connection (ENV ['HEROKU_POSTGRESQL_FOLLOWER_URL']) '' –

0

Die Konsole hat sicherlich ihren Platz, aber wenn ich überprüfen möchte, welche Daten in einer Datenbank sind, dann würde ich es lieber direkt betrachten, ohne dass ActiveRecord usw. im Weg ist. Ich habe viele Instanzen gefunden, wo die Verwendung der Konsole erfordert, dass Sie die generierte SQL trotzdem überprüfen, um sicherzustellen, dass keine Bereiche (zum Beispiel) hineinrutschen.

Ich würde vorschlagen, dass Sie versuchen, die Angewohnheit der Verwendung zu bekommen eine SQL-Schnittstelle (PgAdminIII vielleicht) anstelle der Konsole - ein Heroku dataclip funktioniert sogar, wenn Sie keine Probleme mit der Verbindung vom Client haben möchten (obwohl die psql-Verbindungszeichenfolge von der Datenbankseite erhalten wird).

0

Wenn Sie besorgt sind über versehentlich Sachen zu löschen, führen Konsole mit der Sandbox-Flag

heroku run console --sandbox --app app-name 

Ihre Änderungen werden, wenn die Sitzung beendet werden zurückgerollt.

0

Dies verwendet die Anmeldedaten der Follower-Datenbank aus der Umgebungsvariablen FOLLOWER_DATABASE_URL in Ihrer Heroku-App, um eine Rails-Konsole zu starten, die eine direkte Verbindung zum Follower statt zur heraufgestuften Datenbank herstellt. Normalerweise ist Rails so eingestellt, dass es standardmäßig von DATABASE_URL liest, und dies stellt es nur auf einen anderen Wert für die Dauer Ihrer Konsolensitzung ein.

heroku run 'DATABASE_URL=$FOLLOWER_DATABASE_URL rails console'

Verwandte Themen