なるようになるブログ

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

rails commit log流し読み(2022/12/22)

2022/12/22分のコミットです。

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

activerecord/CHANGELOG.md


Add ActiveRecord::Base::normalizes

Active Recordの修正です。

attributeのnormalize処理を定義する為のActiveRecord::Base::normalizesを追加しています。ActiveRecord::Base::normalizesで定義されたnormalize処理はattributeのassignやupdate時に適応されるようになっています。また、このnormalize処理はfinder methodsにより検索等の際も適応されるようになっています。

class User < ActiveRecord::Base
  normalizes :email, with: -> email { email.strip.downcase }
end

user = User.create(email: " CRUISE-CONTROL@EXAMPLE.COM\n")
user.email
# => "cruise-control@example.com"

user = User.find_by(email: "\tCRUISE-CONTROL@EXAMPLE.COM ")
user.email
# => "cruise-control@example.com"

User.exists?(email: "\tCRUISE-CONTROL@EXAMPLE.COM ")
# => true

Avoid double JSON parse for metadata-less messages

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

ActiveSupport::Message::Metadata#extract_metadataでデータのdecodeを行うかどうかのチェック処理で、パース対象のデータがJSON形式かどうかだけでなく、パース対象のメタデータが含まれているかどうかをチェックするよう修正しています。


Update libxml-ruby

Gemfile.lockの修正です。

libxmlを最新バージョンに更新しています。元使っていたバージョン(3.2.1)だと特定環境でインストール時にエラーになってしまう為。


ActiveRecord::Relation#none?/#any?/#one?: support pattern arg (#46728)

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

ActiveRecord::Relation#any?#none?及び#one?pattern引数を指定出来るよう修正しています。Enumerable版の各メソッドの挙動を合わせる為。


Document MySQL numeric quoting behavior in ActiveRecord::Sanitization

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

ActiveRecord::Sanitizationの各メソッドのdocに、MySQLでnumericのquotingがどのように行われるかについての説明を追加しています。


Merge pull request #46790 from lazaronixon/singular-association-refactor

activerecord/lib/active_record/associations/has_one_association.rbactiverecord/lib/active_record/associations/singular_association.rbの修正です。

singular associationのbuild処理で不要なメソッド呼び出しを減らすようリファクタリングしています。


Splat the tag names to avoid passing double arrays

railties/lib/rails/rack/logger.rbの修正です。

tagging処理でタグ名をsplatし二重配列を渡さないよう修正しています。


Reduce a String object allocation

actionpack/lib/action_controller/log_subscriber.rbの修正です。

action処理完了時のログ出力処理でStringオブジェクトの生成数を減らすよう修正しています。


Avoid creating an extra Hash object when no options were given

actionpack/lib/action_controller/metal/head.rbの修正です。

headメソッドのoptionsが指定されていない場合に不要なHashオブジェクトの生成を行わないよう修正しています。


Support string keys for queries on deterministic attributes

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

deterministic attributesのquery keyにStringを指定出来るよう修正しています。