Du kan oprette forbindelse til Postgres-serveren med eksplicit (my
OS brugernavn) eller implicit (timonin
dvs. rolle i database.yml
) login.
Som jeg ser din database.yml
har et brugernavn, men kun til produktion miljø. At køre rake-test uden at angive Rails-miljøet vil køre dem mod udvikling miljø som standard. Det er derfor, du har fejl som FATAL: role "my" does not exist
.
Så afhængigt af dine behov skal du tilføje disse udsagn til alle databasers definitioner (test
og development
også):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Derefter vil din Rails-applikation oprette forbindelse som timonin
bruger.
Den fulde tjekliste er følgende:
- Opret rolle
Her er SQL til PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Fjern kommentarer eller tilføj udsagn
username: timonin
ogpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
til din database.yml-fil - Kør alle operationer med
TIMONIN_DATABASE_PASSWORD
variabel:
Her er ændret rake kommando:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
eller:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
til testmiljø.