2016-12-25 2 views
0

Ich habe eine ziemlich einfache Ruby-Datei, die auf meinem localhost in der Entwicklungsumgebung gut läuft, aber ich kann es nicht erreichen, eine Verbindung zur postgresql-Datenbank auf Heroku herzustellen.Wie schreibe ich in eine pg-Datenbank auf Heroku von Ruby? (Not Rails)

require 'pg' 
conn = PG.connect(dbname: 'postgres://uullzzubseknqp:f[email protected]ec2-54-235-204-221.compute-1.amazonaws.com:5432/d80u9t8om01fml') 

ich diesen Fehler:

/app/vendor/bundle/ruby/2.3.0/gems/pg-0.19.0/lib/pg.rb:45:in initialize': could not connect to server: No such file or directory (PG::ConnectionBad) Is the server running locally and accepting from /app/vendor/bundle/ruby/2.3.0/gems/pg-0.19.0/lib/pg.rb:45:in new' connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Ich kann nicht herausfinden, wie die DATABASE_URL ENV Konfigurationsvariable von Heroku zuzugreifen. Ich habe sogar versucht, die tatsächliche Zeichenfolge in den Code anstelle des XXXXX zu schneiden und einzufügen, und es löst denselben Fehler aus.

Ich sehe eine Menge Ratschläge zu StackOverflow, wie man das in einer Rails App macht, aber keine, wie man das als Ruby-Arbeiter macht.

Danke!

Bearbeiten: Die aktuelle DB-Info zum Beitrag hinzugefügt. Ich weiß, dass es unsicher ist, aber es gibt nichts Feines dort, und ich werde es einfach ändern, sobald ich das herausgefunden habe.

Antwort

0

Sequel ist eine gute Möglichkeit zum Verbinden und Senden von Abfragen an eine DB, wenn Sie nicht Rails verwenden.

Vom doc:

DB = Sequel.connect('postgres://user:[email protected]:port/database_name') # requires pg 
+0

Danke für die schnelle Antwort. Ich kann mich schon auf meinem localhost mit der DB verbinden. Ich verstehe nicht wirklich, wie man es speziell in der Heroku-Umgebung macht. – dmanaster

+0

Wissen Sie, wie die DATABASE_URL auf Ihrem Heroku aussieht? –

+0

Ja. eigentlich probiert das PG connect mit der ausgeschnittenen und eingefügten DATABASE_URL string drin und hat den gleichen Fehler bekommen. Ich habe es zum ursprünglichen Beitrag hinzugefügt, damit Sie sehen können. – dmanaster

0

Die Verbindungszeichenfolge aus dem Benutzernamen, ein Passwort gemacht wird, Host, Port und Datenbankname, aber Sie übergeben die gesamte Zeichenfolge zu PG.connect als „dbname ".

Ich vermute, dass Sie diese Zeichenfolge in mit einem anderen Parameternamen passieren würde (uri?), Oder sie brechen in die einzelnen Komponenten aufgeführt here on line 73

+0

Ich werde es versuchen. Nur so verstehe ich - warum würde die Übergabe eines Parameternamens oder von Komponenten anders sein als die Übergabe der vollständigen Zeichenfolge? – dmanaster

+0

Nur verschiedene Möglichkeiten, das Gleiche zu tun. Sie können eine URL verwenden und sie in die Komponenten einbetten oder diese Komponenten separat bereitstellen. –

Verwandte Themen