ActiveRecord issues #tdtech
- kamipo
- activerecordについての話
- rails issues team
http://blog.steveklabnik.com/posts/2012-07-05-how-can-i-contribute-to-ruby-on-rails-
- Railsに2016年一番コミットした人なので、お前勝手にやれって言われた
- Rails 5.0→5.1(Edge Rails)
- Railsにコミットすごくしてる
Railsは3.2のこと − executeしないといけない
綺麗なDSLを書いたら必要な情報が消えてしまう
- SQL手書きしないとまともに書けない
- schema dumperが使い物にならない
- 余裕で直せるのに直せる人がいない
困っている人がいる問題が直るのではなく直す気のある人がいる問題が直る
直すしかない
5.0を自分が使って不便じゃないようにする
MySQL対応直した
MySQLからいろいろな機能が出ているのにRailsが全く対応していない
- custom primary key対応
- テーブルオプション対応
- date time round problem(保存すると時間がroundされる)対応
- ストアドプロシージャがろくずっぽ使えない
- プリペアドステートメントがろくずっぽ使えない
- ONLY_FULL_GROUP_BY対応
- sql_mode = amipo TRADITIONAL(厳格なSQL MODEで動かせる)
200コミットくらい
MySQLとUnicodeの問題
- 欧米では全然問題にならないユニコード
寿司ビール問題 ハハパパ問題
- 他のDBで起きない問題がMySQLでは普通に起こる
utf8mb4_general_ui
- utf8mb4_unicode_ci
- utf8mb4_unicode_520_ci
utf8mb4_bin(オールOK)
欧米の人に分かるように説明するために理論武装
- collating weight問題
MySQL 8.0.1 Release Notesが出ると日本人が死ぬ
active recordを直しても問題は終わらない
- コアには入れづらいやつ
- create with
- retryable_find_or_create_by
- find_or_create_byのcreateがUNIQUE制約に引っかかったらfindしなおす
- いろいろ直している
- 5.0には入らなかった
- クエリのORDER BYが削られてCOUNT飛ばされてスロークエリになる問題を直した
- 「ORマッパーでクエリを書き換えてほしくない派」
- masterにはマージされた
- 5.0には入らなかった
Future
- 実装は出しているのであとは入るかどうか
prepared statement
- SQLモジュールをキーにしてキャッシュしている
has_manyを170倍早くする (3から4で100倍遅くなった)
まとめ
- ActiveRecordの困っているところをひたすら直した
- 直さないと直らない
- 困っているって声を挙げても開発者は何もしてくれないことが多い
- 直す気のあるひとがいる問題が直る