citext 拡張子をテスト データベースに追加する必要があります。残念ながら、db:test:prepare の標準実装では、データベースが削除されて再作成されるため、拡張機能はなくなりました。
私は同じ状況に陥り、db:test:purge (準備の前に呼び出される) を自分の実装でオーバーライドする必要があったため、データベースを削除する代わりに、オブジェクトを削除するだけでした (「DROP OWNED に基づく解決策」 BY ユーザー名')。
レーキ タスク コードで更新: 私のレーキ タスクは次のようになります。lib/tasks/overrides/database.rake; に置きました。しかし、それはあなた次第です。
namespace :db do
namespace :test do
task :purge => []
Rake::Task["purge"].clear
# desc overrides default task to drop all objects in database instead of the db itself (only postgresql)
task :purge => [:environment, :load_config] do
abcs = ActiveRecord::Base.configurations
case abcs['test']['adapter']
when /postgresql/
# original implementation commented out
#ActiveRecord::Base.clear_active_connections!
#drop_database(abcs['test'])
#create_database(abcs['test'])
drop_database_objects(abcs['test'])
end
end
end
end
def drop_database_objects(config)
case config['adapter']
when /postgresql/
ActiveRecord::Base.establish_connection(config)
sql = "DROP OWNED BY #{config['username']}"
ActiveRecord::Base.connection.execute sql
end
end
変更されていない部分は省略していますが、オリジナルはdatabase.rakeで確認できます。注: Postgresql 9.2.2 には DROP OWNED BY に問題があることがわかりました。9.2.1 と 9.2.3 を使用しても問題ありません。それはちょうどその1つのバージョンです。