なるようになるブログ

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

rails commit log流し読み(2022/02/08)

2022/02/08分のコミットです。

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

activesupport/CHANGELOG.md


Change MessageEncryptor default serializer to JSON for Rails 7.1

Active Supportの修正です。ActiveSupport::MessageEncryptorのデフォルトのSerializerをMarshalからJSONに変更しています。JSONの方がよりセキュアな為。

Marshal -> JSONへの移行をスムーズに行えるようにする為に、Marshal / JSONの両方をサポートしたhybrid Serializerの追加、Marshal serializerへのfallack処理を管理する為のフラグの追加、等も行われています。詳細はguide参照。


Dump the database schema containing the current Rails version

activerecord/lib/active_record/schema.rbactiverecord/lib/active_record/schema_dumper.rbの修正です。

schema dumpファイルにRailsのバージョンを含むよう修正しています。

例:

ActiveRecord::Schema[6.1].define(version: 2022_01_28_123512) do

Rails 7.0でデフォルト値が変更になったcolumn typesがあり、バージョン毎の挙動の変更をmigrationファイルと同様にschema dumpでも対応出来るようにする為、バージョンを含むよう修正しています。


Setup on_encrypted_attribute_declared hook only once

activerecord/lib/active_record/encryption/configurable.rbactiverecord/lib/active_record/railtie.rbの修正です。

ActiveRecord::Encryption.on_encrypted_attribute_declared hookが2回実行されてしまうバグがあったのを修正しています。


Remove TODO

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

先のschema dumpの対応で誤って追加したTODOコメントを削除しています。


fix MessageEncryptor isolation tests

activesupport/lib/active_support/json_with_marshal_fallback.rbの修正です。

String#starts_with?String#start_with?に修正しています。#starts_with?はisolation testでは使えない為。


Dump the precision for datetime columns following the new defaults

activerecord/lib/active_record/connection_adapters/abstract/schema_dumper.rbactiverecord/lib/active_record/connection_adapters/mysql/schema_dumper.rbの修正です。

datetime columnのprecisionのデフォルトが6になった影響で、元々あるschemaをloadしてdumpしなおすと、schemaにdiffが出てしまう(precisionの指定にdiffが出てしまう)という問題があったのを修正しています。この対応により、precisionがデフォルト値と一緒の場合はschemaに出力しないようになっています。なお、代わりにprecision未指定の場合はnilを明示的に出力するようになっています(デフォルトと区別するよう)。