いくつかのテーブルで MyISAM を使用する必要があるアプリケーションがありますが、残りは従来の InnoDB タイプです。アプリケーション自体は、これらのレコードに適用されるトランザクションには関係ありませんが、パフォーマンスが懸念されます。
ただし、Rails テスト環境では、使用されるエンジンがトランザクション対応であることを想定しているため、テスト データベースが schema.rb から生成されると、同じエンジンでインポートされます。この動作を簡単な方法でオーバーライドすることは可能ですか?
これをtest_helper.rbに追加することで、テーブルが正しいタイプであることを確認するために、私はひどいハックに頼りました:
(ActiveRecord::Base.connection.select_values("SHOW TABLES") - %w[ schema_info ]).each do |table_name|
ActiveRecord::Base.connection.execute("ALTER TABLE `#{table_name}` ENGINE=InnoDB")
end
MyISAM に裏打ちされたモデルをテスト可能にするより良い方法はありますか?