2022/02/08分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
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.rb
、
activerecord/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.rb
、
activerecord/lib/active_record/railtie.rb
の修正です。
ActiveRecord::Encryption.on_encrypted_attribute_declared
hookが2回実行されてしまうバグがあったのを修正しています。
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.rb
、
activerecord/lib/active_record/connection_adapters/mysql/schema_dumper.rb
の修正です。
datetime columnのprecisionのデフォルトが6
になった影響で、元々あるschemaをloadしてdumpしなおすと、schemaにdiffが出てしまう(precision
の指定にdiffが出てしまう)という問題があったのを修正しています。この対応により、precisionがデフォルト値と一緒の場合はschemaに出力しないようになっています。なお、代わりにprecision未指定の場合はnil
を明示的に出力するようになっています(デフォルトと区別するよう)。