首先,我必须运行“rake RAILS_ENV=test ...”来让测试套件访问我的测试数据库。烦人但可以忍受。
但是,当我这样做时,我会收到一长串错误,如下所示:
> 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]
看起来一些数据库定义正在不必要地重新加载。我在谷歌上找不到任何提及,所以我想知道其他人是否看过这个?
我在 environment.rb 中使用具有以下内容的 PostgreSQL 数据库:
config.active_record.schema_format = :sql
并使用带有 rake 0.8.7 的 Rails 2.3.5。
在这一点上,我已经修复了它,但忘记了如何!我想我可能已经将 pgcrypt 加载到模板模式中,因此数据库正在创建一个已经加载的“空白”数据库,然后 rails 正在从保存的模式中重新定义函数。从模板数据库中卸载函数可以解决这个问题。