Você pode se conectar ao servidor Postgres com explícito (
my
ou seja, nome de usuário do SO) ou implícito (timonin
ou seja, função em database.yml
) Conecte-se. Como vejo seu
database.yml
tem uma declaração de nome de usuário, mas apenas para produção meio Ambiente. Executar testes de rake sem especificar o ambiente Rails irá executá-los no desenvolvimento ambiente por padrão. É por isso que você tem um erro como FATAL: role "my" does not exist
. Portanto, dependendo de suas necessidades, você deve adicionar essas declarações às definições de todos os bancos de dados (
test
e development
também): username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Depois disso, seu aplicativo Rails se conectará como
timonin
do utilizador. A lista de verificação completa é a seguinte:
- Criar função
Aqui está o SQL para PostgreSQL:
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Remova ou adicione declarações
username: timonin
epassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
para seu arquivo database.yml - Executar todas as operações com
TIMONIN_DATABASE_PASSWORD
variável:
Aqui está o comando rake alterado:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
ou:
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
para ambiente de teste.