2010-05-07 7 views
1

Tout d'abord, je dois exécuter "rake RAILS_ENV = test ..." pour que les suites de tests atteignent mon DB de test. Agaçant mais d'accord pour vivre avec.rake test et test_structure.sql

Cependant quand je le fais, je reçois un long jet d'erreurs comme ceci:

> rake RAILS_ENV=test -I test test:units 
psql:/path/to/project/db/test_structure.sql:33: ERROR: function "armor" already exists with same argument types 
[and many more] 

Il semble que certaines définitions DB sont inutilement se rechargées. Je ne trouve aucune mention de cela sur Google, donc je me demandais si d'autres ont vu cela?

J'utilise une base de données PostgreSQL avec ce qui suit dans mon environment.rb:

config.active_record.schema_format = :sql 

et en utilisant Rails 2.3.5 avec râteau 0.8.7.

À ce stade, je l'ai réparé, mais j'ai oublié comment! Je pense que pgcrypt aurait pu être chargé dans le schéma du template, donc la base de données créait une base de données "vierge" déjà chargée, puis les rails redéfinissaient les fonctions à partir du schéma sauvegardé. Décharger les fonctions de la base de données du modèle aurait corrigé cela.

Répondre

1

La convention habituelle pour exécuter une tâche de râteau est comme ci-dessous:

> RAILS_ENV=test rake test:units 

ou comme ci-dessous:

> rake test:units RAILS_ENV=test 

Pouvez-vous essayer d'exécuter dans l'un des moyens ci-dessus? J'espère que ça fait l'affaire!

+0

Je l'exécute de cette façon (le "-I test" était une habitude inutile d'exécuter "ruby -I test ..." pour un seul fichier de test). – korinthe