ブックマーク / blog.kamipo.net (2)

  • Rails 6.0の複数DBでリードレプリカのテストするのたぶん大変 - かみぽわーる

    Rails 6.0の複数DBのレビューしてるときに気づいたことなんですけど、たぶんリードレプリカからデータを読むテストをするのたぶん大変だと思われます。 うちの業務のアプリでActive Recordが更新を検知できない方法でデータが更新されるとテストがコケるという問題が以前にあり、これと同じ構造の問題がマスターのコネクションで更新したときマスターのコネクションのクエリキャッシュはクリアされるけどリードレプリカのコネクションのクエリキャッシュは残ったままというのがあるよね、というのをテストコードで示そうと思ったときのことである。 github.com 通常RailsアプリでDBつかったテストをするとき、テストの中で変更されたデータを毎回初期状態に戻すのにフィクスチャーをロードし直すのは時間がかかって効率がわるいので、テストケースに入る前にトランザクションを開始しといてテストケース終わったら

    Rails 6.0の複数DBでリードレプリカのテストするのたぶん大変 - かみぽわーる
  • Rails 6.0でDeprecatedになるActive Recordの振る舞い3つ - かみぽわーる

    Deprecatedにした経緯というか背景が伝わってるのかどうかアレだと思ったので、ここに日語にて書き記しておく。 Deprecate mismatched collation comparison for uniquness validator by kamipo · Pull Request #35350 · rails/rails · GitHub Active Recordのuniqueness validatorはデフォルトでcase sensitiveな比較をするんですが、これが、文字列のデフォルトのcollationがcase insensitiveなMySQLと相性が悪く、DB上のUNIQUE制約と一致しない振る舞いだったりINDEXが効率よく使えずDBが死ぬみたいな問題を引き起こしていました。 例: 当にあったRailsの怖い話 僕も主に仕事コードレビューで過去に何

    Rails 6.0でDeprecatedになるActive Recordの振る舞い3つ - かみぽわーる
  • 1