1

まず、「rake RAILS_ENV=test ...」を実行して、テスト スイートをテスト DB にヒットさせる必要があります。面倒だけど一緒に住んで大丈夫。

ただし、そうすると、次のような長いエラーが発生します。

> 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]

一部の DB 定義が不必要に再ロードされているようです。Googleでこれに関する言及が見つからないので、他の人がこれを見たかどうか疑問に思っていましたか?

environment.rb で次のように PostgreSQL データベースを使用しています。

  config.active_record.schema_format = :sql

Rails 2.3.5 と rake 0.8.7 を使用しています。

この時点で修正しましたが、方法を忘れていました。テンプレートスキーマにpgcryptをロードした可能性があると思うので、データベースはすでにロードされた「空の」データベースを作成しており、レールは保存されたスキーマから関数を再定義していました。テンプレートデータベースから関数をアンロードすると、それが修正されます。

4

1 に答える 1

1

rake タスクを実行する通常の規則は次のとおりです。

> RAILS_ENV=test rake test:units

または以下のように:

> rake test:units RAILS_ENV=test

上記の方法で実行してみてはいかがでしょうか。それがうまくいくことを願っています!

于 2011-02-06T11:44:01.600 に答える