Можете да се свържете към сървъра на Postgres с изричен (my
т.е. потребителско име на ОС) или имплицитно (timonin
т.е. роля в database.yml
) влизане.
Както виждам вашия database.yml
има изявление за потребителско име, но само за производство околен свят. Извършването на рейк тестове без да се указва среда на Rails ще ги изпълни срещу development среда по подразбиране. Ето защо имате грешка като FATAL:ролята "my" не съществува
.
Така че в зависимост от нуждите ви трябва да добавите тези изрази към дефинициите на всички бази данни (test
и разработка
както и):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
След това вашето Rails приложение ще се свърже като timonin
потребител.
Пълният контролен списък е следният:
- Създайте роля
Ето SQL за PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Разкоментирайте или добавете твърдения
потребителско име:timonin
ипарола:<%=ENV['TIMONIN_DATABASE_PASSWORD'] %>код> към вашия файл database.yml
- Бягай всички операции с
TIMONIN_DATABASE_PASSWORD
променлива:
Ето променената команда за рейк:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
или:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
за тестова среда.