Du kan ansluta till Postgres server med explicit (my
OS-användarnamn) eller implicit (timonin
dvs roll i database.yml
) logga in.
Som jag ser din database.yml
har användarnamn, men endast för produktion miljö. Att köra raketester utan att specificera Rails-miljö kommer att köra dem mot utveckling miljö som standard. Det är därför du har ett fel som FATAL: role "my" does not exist
.
Så beroende på dina behov måste du lägga till dessa uttalanden till alla databasers definitioner (test
och development
likaså):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Efter det kommer din Rails-applikation att ansluta som timonin
användare.
Den fullständiga checklistan är följande:
- Skapa roll
Här är 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';
- Ta bort kommentarer eller lägg till påståenden
username: timonin
ochpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
till filen database.yml - Kör alla operationer med
TIMONIN_DATABASE_PASSWORD
variabel:
Här är ändrat rake-kommando:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
eller:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
för testmiljö.