なるようになるブログ

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

rails commit log流し読み(2023/11/02)

2023/11/02分のコミットです。

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

activestorage/CHANGELOG.md


Do not use INSERT IGNORE when upserting to MariaDB

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

upserting処理でMariaDBの場合INSERT IGNOREを使用しないよう修正しています。Support RETURNING clause for MariaDBで重複のinsertを避ける処理をINSERT IGNOREを使用するよう修正したのですが、これはDBでwarningが発生するSQLになってしまっていた為、INSERT IGNOREを使用しないよう修正しています。


Allow accepting service as a proc

Active Storageの修正です。

has_one_attached及びhas_many_attachedserviveオプションにProcを指定出来るようにして、動的に使用するserviceを切り替えられるよう対応しています。

class User < ActiveRecord::Base
  has_one_attached :avatar, service: ->(user) { user.in_europe_region? ? :s3_europe : :s3_usa }
end

class Gallery < ActiveRecord::Base
  has_many_attached :photos, service: ->(gallery) { gallery.personal? ? :personal_s3 : :s3 }
end

Document async option in guides for query.active_record events

rails guideのActive Support Instrumentationの修正です。

sql.active_recordのpayloadについて説明している箇所に:async keyについての説明を追加しています。


Expand the transaction callback ordering in guides [ci-skip]

docの修正です。

rails guideのActive Record CallbacksTransactional Callback Orderingセクションに、transactionのorderはconfig.active_record.run_after_transaction_callbacks_in_order_definedで変更出来る旨説明を追加、及び、関連するdocのグラマーの修正を行っています。


Optimize ActiveRecord::QueryMethods.excluding

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

ActiveRecord::QueryMethods.excludingActiveRecord::QueryMethodsまたはActiveRecord::Relationインスタンスが指定された場合、一旦Arrayに変換して処理が行われていたのを、Arrayへの変換を行わず処理を行えるよう修正しています。合わせて、指定されたインスタンスに異なるclassが混ざっていた場合エラーとするよう修正しています。