Ich möchte von einer anderen Heroku-App aus auf die Datenbank einer App zugreifen. Ist das in der gemeinsam genutzten Datenbank möglich?
quelle
Ich möchte von einer anderen Heroku-App aus auf die Datenbank einer App zugreifen. Ist das in der gemeinsam genutzten Datenbank möglich?
AKTUALISIERT
Ursprünglich wurde in dieser Antwort angegeben, dass dies zwar mit wenigen Tricks möglich war, jedoch stark davon abgeraten wurde. Dies beruhte auf Ratschlägen auf der Heroku-Entwickler-Support-Website. Kürzlich veröffentlichte Heroku jedoch eine Mitteilung, in der speziell beschrieben wurde, wie dies erreicht werden kann, und verwässerte ihre Ratschläge auf der Entwicklerseite. Der vollständige Text dieses Abschnitts ihrer E-Mail ist unten enthalten:
Wussten Sie, dass Heroku-Apps eine gemeinsame Datenbank gemeinsam nutzen können? Beispielsweise können Sie Analysefunktionen in einer von Ihrem benutzerbezogenen Code getrennten Anwendung ablegen.
Setzen Sie einfach die Konfigurationsvariable DATABASE_URL für mehrere Apps auf denselben Wert. Holen Sie sich zunächst die DATABASE_URL für Ihre vorhandene App:
$ heroku config | grep DATABASE_URL --app sushi DATABASE_URL => postgres://lswlmfdsfos:[email protected]/ldfoiusfsf
Setzen Sie dann die DATABASE_URL für neue Apps auf diesen Wert:
$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:[email protected]/ldfoiusfsf --app sushi-analytics Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf Restarting app... done, v74. That's it
- Jetzt teilen sich beide Apps eine Datenbank.
Als Referenz diente Herokus ursprünglicher Rat, eine API für den Remotezugriff auf Daten zu erstellen und zu verwenden. Meine persönliche Ansicht ist, dass dies in vielen Situationen insgesamt ein guter Rat ist (dh besser als nur mehrere Anwendungen mit derselben Datenbank zu verbinden), obwohl ich Situationen sehen kann, in denen dies mehr Probleme verursachen würde, als es wert ist.
AKTUALISIEREN
Gemäß den Kommentaren zu dieser Antwort ist es erwähnenswert, dass Heroku sich das Recht vorbehält, Datenbank-URLs nach Bedarf zu ändern. In diesem Fall schlagen Ihre sekundären Verbindungen fehl und Sie müssen die URLs entsprechend aktualisieren.
Aktuelle Antwort auf die relevante Frage!
Heroku unterstützt jetzt offiziell eine bessere / elegantere Lösung durch das Addon-Framework. In ihrem neuesten Newsletter wird beschrieben, wie Addons zwischen Apps ausgetauscht werden können. Nachfolgend sind die in der Beschreibung erwähnten Ausschnitte aufgeführt:
Link: Erweiterung der Leistung von Addons
quelle
heroku addons:attach originating_app_name::HEROKU_POSTGRESQL_COLOR_URL -a no_db_app_name
Soweit ich weiß, ist dies möglich. Sie müssen die Heroku-Konfigurationsvariablen für Ihre App mit der Datenbank überprüfen und dann die Datenbank-URL für die App festlegen, die die Datenbank für denselben Wert freigeben möchte. Ein bisschen aus der Bahn und wie unterstützt es ist, weiß ich nicht.
BEARBEITEN Um mich zu beruhigen, habe ich zwei Apps auf Heroku gestartet - einen einfachen Gerüst-Beitrag mit einem Titel.
http://evening-spring-734.heroku.com/posts ist der Meister
http://electric-galaxy-230.heroku.com/posts - ist der Sklave
Auf beiden erstellte Beiträge werden also in die Datenbank-URL von night-spring-734 geschrieben.
Ich habe nur die Heroku-Konfiguration verwendet, um die DATABASE_URL von Abend-Frühling-734 abzurufen und dann den gleichen Wert in die DATABASE_URL von Elektro-Galaxie-230 zu setzen.
Sie könnten mit einigen fruchtigen DB-Rennbedingungen enden, aber das ist definitiv möglich.
Magie, oder?
quelle
Ich habe dies kürzlich im Heroku-Newsletter erhalten. Ich sende ihnen eine E-Mail, um herauszufinden, ob es sich wirklich um eine genehmigte Verwendung handelt.
quelle
Das Amazon RDS-Plugin funktioniert hierfür gut. Mehrere Apps können dieselbe RDS-Instanz gemeinsam nutzen.
Sie haben die Flexibilität, Tabellen gemeinsam zu nutzen oder eine Kollision mit Tabellennamen mithilfe des Präfixes active_record.table_name_prefix zu vermeiden.
quelle
Siehe Heroku-Referenz: https://devcenter.heroku.com/categories/heroku-postgres
quelle