K serveru Postgres se můžete připojit pomocí explicitního (my tj. uživatelské jméno OS) nebo implicitní (timonin tj. role v database.yml ) přihlášení.
Jak vidím váš database.yml má prohlášení o uživatelském jménu, ale pouze pro produkci životní prostředí. Spuštění rake testů bez určení prostředí Rails je spustí proti vývoji prostředí ve výchozím nastavení. To je důvod, proč máte chybu jako FATAL: role "my" does not exist .
Takže v závislosti na vašich potřebách musíte tyto příkazy přidat do definic všech databází (test a development také):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Poté se vaše aplikace Rails připojí jako timonin uživatele.
Úplný kontrolní seznam je následující:
- Vytvořit roli
Zde je SQL pro PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Odkomentujte nebo přidejte prohlášení
username: timoninapassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>do souboru database.yml - Spustit všechny operace s
TIMONIN_DATABASE_PASSWORDproměnná:
Zde je změněn příkaz rake:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
nebo:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
pro testovací prostředí.