なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2019/02/07)

2019/02/07分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

actionmailbox/CHANGELOG.md

actionview/CHANGELOG.md

activerecord/CHANGELOG.md


Allow skipping incineration of processed emails

Action Mailboxの修正です。

processed emailsが強制的に削除されていたのを、削除するかどうかを指定出来るよう修正しています。削除したくない場合、config.action_mailbox.incinerateにfalseを指定すればOKです。


Merge pull request #35036 from rails/av-base-subclass

Action Viewの修正です。

compiled template methodsをActionView::Baseのsubclassで管理するよう修正しています。

template objectの破棄が正しく行えず、dev環境でmemory leakが発生してしまう、という問題(ActionView leaks memory in dev)がありその対応の一環として行われています。

この修正により改善(DetailsKeyがclearされた際にsubclassが正しくされる)したのですが、まだmemory leakは残っているとの事です。


Refactor around scoping

Active Recordの修正です。

scoping処理のリファクタリングとして、inherited scopeの検索をスキップしたい際に、falseを特別な値として使用していたのをskip_inherited_scopeを使用するよう修正、_scopingメソッドをRelationで定義するよう修正、等を行っています。


Fix relation.create to avoid leaking scope to initialization block and callbacks

activerecord/lib/active_record/relation.rbの修正です。

relation.createでレコードを作成する際に、initialization block及びcallbacks実行時にscopeがinitialization block及びcallbackにも影響が出るようになってしまっていたのを、影響が出ないよう修正しています。

relation.createではscope attributesを割り当てる為にscopingを使用しているのですが、scopingはグローバルに影響を与える為、callbackでクラスレベルのquerying methodsを実行した場合、そちらにも影響を与えてしまっていました。これを回避する為に、initialization block及びcallback実行時に元々のscopeをリストアするよう修正しています。