首先,我必须运行“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
并使用Rails 2.3.5和rake 0.8.7。
此时我已经修好但却忘记了!我想我可能已经将pgcrypt加载到模板模式中,因此数据库正在创建一个已经加载的“空白”数据库,然后rails从已保存的模式重新定义了这些函数。从模板数据库中卸载函数将修复该问题。
答案 0 :(得分:1)
运行rake任务的通常惯例如下:
> RAILS_ENV=test rake test:units
或如下:
> rake test:units RAILS_ENV=test
你可以尝试以上述方式之一跑步吗?希望能有所作为!