2012-07-30 6 views
9

Ich bin ziemlich neu in RoR und ich bin dabei, meine nächste App auf Heroku zu implementieren. Ich möchte meine Entwicklung & Testumgebung zu meiner Produktionsumgebung für den reibungslosen Übergang entsprechen. Daher habe ich PostgreSQL auf meinem System installiert. Dieser Prozess war mehr als frustrierend und ich bin mehr als verwirrt. Ich folgte unzähligen Tutorials ohne Erfolg und es scheint, als hätten viele widersprüchliche Informationen. Hier ist, was ich weiß:Postgresql.app vs Homebrew

Es gibt viele Möglichkeiten, Postgresql zu installieren. Gängige Optionen sind Macports, Homebrew, Fink, Postgresql.app oder EnterpriseDB. Sobald Sie eines der vorherigen installieren, müssen Sie Ihre Rails-Anwendung erstellen und entweder laufen:

rails new <app_name> -d postgresql 

oder den Standard laufen ‚neuen Schienen‘ und ändern Sie dann ‚sqlite3‘ auf ‚pg‘ in Ihrem gemfile. Dann, wenn ich richtig bin, haben Sie eigentlich Ihre eigene Datenbank in der Befehlszeile erstellen, indem Sie diese:

$ psql 
$ CREATE DATABASE your_database_name; 

Dann bearbeiten Sie Ihre database.yml etwas in der Nähe dieser folgen:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: <your_database_name> 
    host: localhost 
    pool: 5 
    username: <username> 
    password: 

Sobald das erledigt ist, sollte alles gut sein. Ich habe jedoch Probleme. Ich habe es tatsächlich mit dem obigen Prozess arbeiten, aber ich bin verwirrt, wie es läuft. Während der Stunden, in denen ich versuchte, all das zum Laufen zu bringen, installierte ich Macports, Homebrew und Postgresql.app. Jedes Mal, wenn ich mit der Datenbank (wie ein ‚rake db: Migration‘) versuchen, zu interagieren, ohne postgresql.app Laufen, ich diesen Fehler:

could not connect to server: Connection refused 
    Is the server running on host "localhost" (::1) and accepting 
    TCP/IP connections on port 5432? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (127.0.0.1) and accepting 
    TCP/IP connections on port 5432? 
could not connect to server: Connection refused 
    Is the server running on host "localhost" (fe80::1) and accepting 
    TCP/IP connections on port 5432? 

Wenn ich es wieder nach oben schießen, alles ist in Ordnung. Ok, das führt mich zu der Annahme, dass mein System postgresql.app verwendet, um postresql auszuführen. Mit diesen Informationen kann ich Macports und Homebrew-Installationen von postgresql sicher deinstallieren. Doch bei so tun, bekomme ich diesen Fehler bei dem Versuch, mit der Datenbank zu interagieren:

Library not loaded: /usr/local/lib/libpq.5.4.dylib (LoadError) 

ich Macports neu installieren und immer noch die gleichen Fehler. Dann installiere ich Homebrew neu und der Fehler verschwindet. Ich deinstalliere dann wieder Macports und alles ist noch in Ordnung. Es scheint, dass postgresql.app und meine Homebrew-Installation irgendwie voneinander abhängig sind. Wenn ich richtig liege, sollten sie unabhängig voneinander laufen können, weil jede eine vollständige Installation von postgreql ist. Ich habe zu diesem Zeitpunkt ziemlich viele Ideen. Irgendwelche Eingaben darüber, wie dieser Prozess ausgeführt wird, was vor sich geht, wären SEHR ANERKANNT.

EDIT

$ which psql 

zeigt:

/usr/local/bin/psql 

und

ls -l /usr/local/bin/psql 

zeigt:

lrwxr-xr-x 1 robertquinn admin 35 Jul 29 17:32 /usr/local/bin/psql -> ../Cellar/postgresql/9.1.4/bin/psql 
+1

Meine Vermutung Postgres-Server ist unter postgres.app läuft, aber die Befehlszeile Pfade zu den Homebrew ausführbaren Dateien verweisen ? Was zeigt "welches psql"? Und dann 'ls -l' diesen Pfad – house9

+0

hinzugefügt sie in einer Bearbeitung – flyingarmadillo

+1

Keller ist, wo Homebrew installiert, können Sie versuchen, postgres.app zu Ihrem Pfad hinzufügen, siehe http://postgresapp.com/documentation – house9

Antwort

5

Homebrew ist definitiv der Weg zu gehen. Nach Jahren der Verwendung von Macports finde ich Homebrew viel einfacher zu bedienen, zu aktualisieren und zu pflegen.

Wenn Sie neu bei Homebrew sind, manchmal, wenn Sie etwas installieren, wird am Ende der Installation Ausgabe ausgegeben, die Ihnen zusätzliche Aufgaben gibt.Manchmal werden Sie von der Installation aufgefordert, manuell neue Verknüpfungen zu erstellen. Manchmal werden Sie aufgefordert, Verknüpfungen mit den neuen im Keller befindlichen ausführbaren Dateien wiederherzustellen. Stellen Sie sicher, dass Sie diese Ausgabe gelesen haben und befolgen Sie diese Anweisungen nach der Installation.

Sobald diese Anweisungen befolgt sind, öffnen Sie ein neues Terminalfenster, um sicherzustellen, dass Ihre Einstellungen berücksichtigt werden.

Wenn Sie rails new app_name -D postgresql verwenden, sollte Ihre database.yml Datei bereits korrekt konfiguriert sein, es sei denn, Sie haben Ihre Postgres-Instanz so konfiguriert, dass sie einen Benutzernamen und ein Passwort verwendet.

Zum Starten und Stoppen Postgres zu erleichtern, habe ich diese Befehle meiner .profile Datei

# postgres 
alias pg_start="pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start" 
alias pg_stop="pg_ctl -D /usr/local/var/postgres stop -s -m fast" 
+0

Kann einer von Ihnen posten, was Sie tatsächlich getan haben, um das Problem zu lösen? Ich bin an genau der gleichen Stelle wie @flyingarmadillo – ajbraus

+0

@ajbraus wo hast du Probleme? Die obigen Befehle, denen ich Aliasnamen gegeben habe, sind die Befehle zum Starten und Stoppen von Postgres. Zu Beginn würden Sie (in Ihrem Terminal) 'pg_ctl -D/usr/local/var/postgres -l/usr/local/var/postgres/server.log start 'eingeben. Macht das Sinn? – sorens

+0

Ich bekomme dies: Server startet sh: /usr/local/var/postgres/server.log: Keine solche Datei oder Verzeichnis –