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: timoninochpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>till filen database.yml - Kör alla operationer med
TIMONIN_DATABASE_PASSWORDvariabel:
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ö.