rails 3 postgreSQL basic 'Datenbank existiert nicht'

8

OK, ich baue meine erste Rails 3.0-App und möchte den PostgreSQL-Server als Produktion auf meinem Entwicklungscomputer (der 10.6 läuft) testen. Wenn Sie eine neue App erstellen und Rake db: migrieren, werden SQLite-Datenbanken für alle drei Umgebungen erstellt. Cool. Jetzt möchte ich lernen, wie man in die Produktion geht und postgres benutzt. Ich habe Homebrew verwendet, um postgres zu installieren, installiert die pg (env ARCHFLAGS="-arch x86_64" gem install pg) und postgres-pr gems .

Ich habe Rake db:migrate in der Hoffnung ausgeführt, dass es wie bei sqlite3 meinen Produktionsserver automatisch erstellt, seit ich meine Datenbank.yml aktualisiert habe (siehe unten).

OK, in meinem App-Ordner starte ich den Server mit ' rails s --environment=production ' neu und es wird darauf hingewiesen, dass meine Produktionsdatenbank nicht gefunden werden kann.

Also all die Google-Suche nach "Rails 3 postgres install" hat mich so weit gebracht, aber ich vermisse etwas, weil rails die neue pg-Datenbank nicht erstellen kann.

postgres läuft wie von ps bestimmt.

%Vor%

Aber dieses Verzeichnis hat diese Datenbank nicht, also fehlt mir etwas. Was übersehe ich?

Das ist mein database.yml-Snippet:

%Vor%     
sam452 13.12.2011, 15:48
quelle

2 Antworten

12

Hier sind ein paar Dinge los. Zunächst scheinen Sie das SQLite- und PostgreSQL-Format für die Einstellung database: in Ihrem database.yml zu mischen. Mit SQLite geben Sie den relativen Pfad zur SQLite-Datenbankdatei an mit etwa:

%Vor%

Aber mit PostgreSQL geben Sie den Datenbanknamen an, etwa so:

%Vor%

Dann, sobald database.yml eingerichtet ist, würden Sie den Datenbankbenutzer erstellen (falls benötigt) von innen psql :

%Vor%

und dann lässt Rails die Datenbank erstellen :

%Vor%

Dann sollten Sie in der Lage sein, Ihre Migrationen auszuführen, um Ihre anfänglichen Tabellen zu erstellen, und Sie können loslegen.

Sie möchten wahrscheinlich die create role Dokumentation lesen, um sicherzugehen, dass Sie sie erhalten die richtigen Optionen. Sie möchten wahrscheinlich lieber in der Entwicklungsumgebung als in der Produktion arbeiten, also habe ich die Namen und YAML geändert, um das zu berücksichtigen, die Produktion ist für die Bereitstellung gedacht und ich glaube nicht, dass Sie gerade etwas bereitstellen.

    
mu is too short 13.12.2011, 23:29
quelle
4

Ich bin nicht mit Rails vertraut, aber Sie könnten Ihre Datenbank als Postgres-Superuser erstellen und dann Privilegien vergeben, vorausgesetzt, dass der postgres-Superuser in Ihrer Linux-Distribution postgres ist:

%Vor%

dann in postgres gewähren einem anderen Benutzer Privilegien

%Vor%

Dann sollte Ihre Konfigurationsdatei wie folgt aussehen:

%Vor%     
Francisco Valdez 13.12.2011 20:57
quelle