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: timonin
apassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
do souboru database.yml - Spustit všechny operace s
TIMONIN_DATABASE_PASSWORD
promě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í.