なるようになるブログ

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

rails commit log流し読み(2025/12/01)

2025/12/01分のコミットです。

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

activemodel/CHANGELOG.md


Add schematized json for has_json (#56258)

Active Modelの修正です。

JSON attributesにschmaを強制して使用する為のAPI(has_jsonhas_delegated_json)を追加しています。schemaで使用出来る型はbooleaninteger、及びstringのみです。nest等は出来ません。has_delegated_jsonhas_jsonを使用 + schema keyがそのままgetter/setterとして定義されるようになっています。

class Account < ApplicationRecord
  has_json :settings, restrict_creation_to_admins: true, max_invites: 10, greeting: "Hello!"
  has_delegated_json :flags, beta: false, staff: :boolean
end

a = Account.new
a.settings.restrict_creation_to_admins? # => true
a.settings.max_invites = "100"
a.settings = { "restrict_creation_to_admins" => "false", "max_invites" => "500", "greeting" => "goodbye" }
a.settings.greeting # => "goodbye"

a.staff # => nil
a.staff = true
a.staff? # => true

Fix rdoc to md for 83b33ca

activemodel/CHANGELOG.mdのdocの修正です。

エントリーのフォーマットの修正を行っています。


Fix typos on SchematizedJson [ci skip]

activemodel/lib/active_model/schematized_json.rbのdocの修正です。

コメント内のタイポを修正しています。


ActiveJob.perform_all_later should respect job_class.enqueue_after_transaction_commit

activejob/lib/active_job/enqueue_after_transaction_commit.rbの修正です。

ActiveJob.perform_all_laterjob_class.enqueue_after_transaction_commitの設定を無視して全てのjobを即時に追加していたのを、enqueue_after_transaction_commitがtrueの場合、perform_laterと同様にcommit後にjobを追加するよう修正しています。


Merge pull request #56256 from zzak/re-56186

actionpack/lib/action_dispatch/middleware/remote_ip.rbの修正です。

IpSpoofAttackErrorのエラーメッセージに、Forwarded headerの情報も含むよう修正しています。HTTP_X_FORWARDED_FOR headerの情報は元々含まれるようになっており、エラーメッセージに含まれる情報を合わせるようにするため。


Stub bundle install for ApiAppGeneratorTest

railties/test/generators/api_app_generator_test.rbの修正です。

他のテストと同様に、bundle installをstubして実際には実行しないよう修正しています。bundle installの実行に数秒かかってしまうため、実行時間削減のため。


Fix example

activemodel/CHANGELOG.mdactivemodel/lib/active_model/schematized_json.rbのdocの修正です。

has_jsonのexample内のタイポの修正を行っています。