U kunt verbinding maken met de Postgres-server met expliciete (my
d.w.z. gebruikersnaam van het besturingssysteem) of impliciet (timonin
d.w.z. rol in database.yml
) inloggen.
Zoals ik je database.yml
zie heeft gebruikersnaam statement, maar alleen voor productie omgeving. Door rake-tests uit te voeren zonder de Rails-omgeving te specificeren, worden ze uitgevoerd tegen ontwikkeling omgeving standaard. Dat is de reden waarom je een fout hebt zoals FATAL: role "my" does not exist
.
Dus afhankelijk van uw behoeften moet u deze verklaringen toevoegen aan de definities van alle databases (test
en development
ook):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Daarna zal uw Rails-toepassing verbinding maken als timonin
gebruiker.
De volledige checklist is de volgende:
- Rol maken
Hier is SQL voor PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Commentaar verwijderen of uitspraken toevoegen
username: timonin
enpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
naar uw database.yml-bestand - Uitvoeren alle bewerkingen met
TIMONIN_DATABASE_PASSWORD
variabele:
Hier is het gewijzigde rake-commando:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
of:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
voor testomgeving.