Puoi connetterti al server Postgres con esplicito (my
cioè il nome utente del sistema operativo) o implicito (timonin
cioè ruolo in database.yml
) accedi.
Come vedo il tuo database.yml
ha la dichiarazione del nome utente, ma solo per la produzione ambiente. L'esecuzione di test di rake senza specificare l'ambiente Rails li eseguirà contro lo sviluppo ambiente per impostazione predefinita. Ecco perché hai un errore come FATAL: role "my" does not exist
.
Quindi, a seconda delle tue esigenze, devi aggiungere queste istruzioni a tutte le definizioni dei database (test
e development
anche):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Dopodiché l'applicazione Rails si collegherà come timonin
utente.
La checklist completa è la seguente:
- Crea ruolo
Ecco SQL per PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Decommenta o aggiungi affermazioni
username: timonin
epassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
nel tuo file database.yml - Esegui tutte le operazioni con
TIMONIN_DATABASE_PASSWORD
variabile:
Ecco il comando di rake modificato:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
oppure:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
per l'ambiente di prova.