Sie können sich explizit mit dem Postgres-Server verbinden (my
d.h. OS-Benutzername) oder implizit (timonin
d.h. Rolle in database.yml
) anmelden.
Wie ich Ihre database.yml
sehe hat eine Benutzernamen-Anweisung, aber nur für die Produktion Umgebung. Wenn Sie Rake-Tests ausführen, ohne die Rails-Umgebung anzugeben, werden sie gegen die Entwicklung ausgeführt Umgebung standardmäßig. Aus diesem Grund haben Sie einen Fehler wie FATAL: role "my" does not exist
.
Je nach Bedarf müssen Sie diese Anweisungen also zu allen Datenbankdefinitionen hinzufügen (test
und development
auch):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Danach verbindet sich Ihre Rails-Anwendung als timonin
Benutzer.
Die vollständige Checkliste lautet wie folgt:
- Rolle erstellen
Hier ist SQL für PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Entkommentieren Sie oder fügen Sie Aussagen hinzu
username: timonin
undpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
in Ihre database.yml-Datei - Laufen alle Operationen mit
TIMONIN_DATABASE_PASSWORD
Variable:
Hier ist der geänderte Rake-Befehl:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
oder:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
für die Testumgebung.