Vous pouvez vous connecter au serveur Postgres avec explicite (my
c'est-à-dire nom d'utilisateur du système d'exploitation) ou implicite (timonin
c'est-à-dire rôle dans database.yml
) connexion.
Comme je vois votre database.yml
a une déclaration de nom d'utilisateur, mais uniquement pour la production environnement. Exécuter des tests de rake sans spécifier l'environnement Rails les exécutera contre le développement environnement par défaut. C'est pourquoi vous avez une erreur comme FATAL: role "my" does not exist
.
Donc, selon vos besoins, vous devez ajouter ces instructions à toutes les définitions de bases de données (test
et development
également):
username: timonin
password: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
Après cela, votre application Rails se connectera en tant que timonin
utilisateur.
La liste de contrôle complète est la suivante :
- Créer un rôle
Voici SQL pour PostgreSQL :
CREATE ROLE timonin LOGIN PASSWORD 'Pas$_sword'
NOINHERIT CREATEDB
VALID UNTIL 'infinity';
COMMENT ON ROLE timonin
IS 'Timonin database role for Rails app';
- Retirez les commentaires ou ajoutez des déclarations
username: timonin
etpassword: <%= ENV['TIMONIN_DATABASE_PASSWORD'] %>
à votre fichier database.yml - Exécuter toutes les opérations avec
TIMONIN_DATABASE_PASSWORD
variables :
Voici la commande de rake modifiée :
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword'
ou :
rake db:create TIMONIN_DATABASE_PASSWORD='Pas$_sword' RAILS_ENV=test
pour l'environnement de test.