2020-01-23 OSSパッチ会参加
1月OSSパッチ会に参加した。
kamipo さんに Rails Attribute API について質問した。
activemodel/lib/active_model/attribute.rb#L12-L14
Attribute API が遅いところ。このへんで attribute 1つに対してオブジェクトを生成しまくっている。
コードの重複について
ActiveModelのこのへんのファイルの機能
activemodel/lib/active_model/attributes.rb
がActiveRecord でいうと下記で分散している
active_record/attribute_methods/read.rb
active_record/attribute_methods/write.rb
新旧Dirty Tracking
activemodel/lib/active_model/dirty.rb#L246-L252
ここで切り替えを行っている。
Q.「Attribute API は public API にならないのか」
- 基本的にpublicにしちゃうと破壊的変更がしにくくなるのでpublicにするのは慎重にやりたい
- Rails Attribute APIの機能自体は悪くないと思っている
- Rails 6.1 で public にしてもいいかなと思っている
- ただ public にするには他のメンテナのAgreeが必要。make sense な reason があるか?
- private APIなのにChangelog listにのってたりするのでもはやpublic APIでは?という話も。