Możesz połączyć się z serwerem Postgres za pomocą jawnego (my
tj. nazwa użytkownika systemu operacyjnego) lub niejawna (timonin
czyli rola w database.yml
) zaloguj się.
Jak widzę twój database.yml
ma oświadczenie o nazwie użytkownika, ale tylko do produkcji środowisko. Uruchamianie testów rake bez określania środowiska Rails spowoduje ich uruchomienie w programowaniu środowiska domyślnie. Dlatego masz błąd, taki jak FATAL: role "my" does not exist
.
Więc w zależności od potrzeb musisz dodać te instrukcje do definicji wszystkich baz danych (test
i development
również):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Następnie aplikacja Railsowa połączy się jako timonin
użytkownika.
Pełna lista kontrolna jest następująca:
- Utwórz rolę
Oto SQL dla PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Odkomentuj lub dodaj stwierdzenia
username: timonin
ipassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
do pliku database.yml - Uruchom wszystkie operacje z
TIMONIN_DATABASE_PASSWORD
zmienna:
Oto zmieniona komenda prowizji:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
lub:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
dla środowiska testowego.