なるようになるブログ

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

rails commit log流し読み(2022/09/28)

2022/09/28分のコミットです。

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

activerecord/CHANGELOG.md

activestorage/CHANGELOG.md

activesupport/CHANGELOG.md


Facilitate use of any regular ERB in database.yml

Active Record、railtiesの修正です。

複数DB用のtaskをロードする際にdatabase.ymlをERBのパース無しで読み込むようになっていた(ダミー文字列を使用するようになっていた)のですが、それだとYAMLのkeyにERBを使用している場合(e.g. shard_<%= i %>:)にYAMLのパースエラーになってしまう為、ERBのパースを行うよう処理を戻しています。このパースをしないようにした対応は、そもそもdatabase.ymlでenvに依存した値を定義している場合にエラーになってしまう、という問題があった為対応が行われたのですが、こちらは、定義されていない値の参照があった場合にエラーにならないよう修正する事で対応されています。合わせて、この対応により不要になったconfig.active_record.suppress_multiple_database_warningをdeprecatedにしています。


Fix incorrect error class for raise_on_open_redirects in guide

rails guideのConfiguring Rails Applicationsの修正です。

config.action_controller.raise_on_open_redirectsを指定する場合に発生するエラークラスが、実際にraiseするクラスと異なっていたのを修正しています。


Merge pull request #45837 from hahmed/ha/active-storage-fix-rotation-test-failing

activestorage/lib/active_storage/analyzer/video_analyzer.rbの修正です。

FFmpeg v5.0+ を使用している場合に、rotation値が正しく取得出来ないバグがあったのを修正しています。


Merge pull request #45628 from asavageiv/alan/fix-lock-documentation [ci-skip]

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

ActiveRecord::Locking::Pessimistic#with_lockのdocに、recordのreload処理が行われる旨説明を追加しています。


Merge pull request #46120 from rails/rescue-template-paths

Action Pack、railtiesの修正です。

ActionDispatch::DebugViewで保持してるrescue対象のtemplate pathをArrayで保持するよう修正しています。engineからrescue templateのpathを指定する方法が現在なく、hack出来るようにする為のとりあえずの対応との事です。


Merge pull request #45081 from iheanyi/iheanyi/custom-query-log-tags-separators

Active Recordの修正です。

query log内のtagの区切り文字が:固定だったのを、query_log_tags_formatで指定したformatterで切り替えられるよう修正しています。現在指定出来るのは:legacy(元の挙動)と:sqlcommenterで、:sqlcommenterを指定した場合は区切り文字が=になるようになっています。これはGoogleの同名のライブラリと挙動を合わせる為、との事です。

参考: Introducing Sqlcommenter: An open source ORM auto-instrumentation library | Google Cloud Blog


Merge pull request #45790 from mikeletscher/bind-attribute-primary-key-relation

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

associationのprimary keyを指定している場合、uniqueness validationのチェックもその指定されているprimary keyで行うよう修正しています。


Filter reloaded classes in Class#subclasses and Class#descendants core exts

activesupport/lib/active_support/core_ext/class/subclasses.rbactivesupport/lib/active_support/descendants_tracker.rbの修正です。

Class#subclassesClass#descendantsでreloadされたクラスは自動でフィルターするよう修正しています。DescendantTracker#subclassesDescendantTracker#descendantsと挙動を合わせる為。

rails commit log流し読み(2022/09/27)

2022/09/27分のコミットです。

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

activesupport/CHANGELOG.md


Merge pull request #46133 from nvasilevski/keep-backwards-compatibility-for-assert-redirected-to

actionpack/lib/action_dispatch/testing/assertions/response.rbの修正です。

Allow specifying the HTTP status code in assert_redirected_toの変更により、assert_redirected_toにカスタムメッセージを指定した場合の挙動が壊れてしまっていたのを修正しています。


Rails.error.report now marks errors as reported to avoid reporting them twice

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

Rails.error.reportメソッドで、report処理完了後に引数のerrorに対してmarkをつけるようにして、同じerrorを複数回reportする事がないよう修正しています。なお、errorがfreezeされている場合はmarkをつけれない為、その場合は同じerrorを複数回report出来てしまうようになっています。


Merge pull request #46094 from shalvah/error-reporting-doc

rails guideのError Reporting in Rails Applicationsの修正です。

guide全体に対して、言い回しの修正、不足していた説明の追加、等を行っています。

rails commit log流し読み(2022/09/26)

2022/09/26分のコミットです。

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

activesupport/CHANGELOG.md


Do not preserve original column collation in change_column for older migrations

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

古いRailsのバージョンで作成されたmigrationファイルのchange_column実行時には、columnのcollationを維持しないよう修正しています。collationの設定によってはエラーになる可能性があるが、古いバージョンのmigrationファイルについては元の挙動を維持する必要がある為。


Merge pull request #44179 from jonathanhefner/add-message_verifiers-message_encryptors

Active Support、railtiesの修正です。

message verifiersの設定、作成を行えるようにする為のRails.application.message_verifiersを追加しています。元々、message verifierのインスタンスを作成する為のRails.application.message_verifierがあったのですが、これは呼び出す度に個別のmessage verifierのインスタンスを作成するようになっており、オプションはインスタンス毎に指定する必要がありました。Rails.application.message_verifiersでは、message_verifiers経由でオプションを指定出来るようになっており、指定したオプションは異なるmessage verifierで共通で使用出来るようになっています。

config.before_initialize do |app|
  app.message_verifiers.rotate(secret_key_base: "old secret_key_base")
end

Fix Active Support isolated build

activesupport/test/message_encryptors_test.rbactivesupport/test/message_verifiers_test.rbの修正です。

必要なファイルのrequireが不足していたのを修正しています。

rails commit log流し読み(2022/09/25)

2022/09/25分のコミットです。

CHANGELOGへの追加はありませんでした。


Fix #45738

Action Cableの修正です。

Add ability to handle reconnects with the connected() callbackで追加された、connected()のcallbackのreconnectedパラメータが必ずtrueになってしまうバグがあったのを修正しています。

rails commit log流し読み(2022/09/24)

2022/09/24分のコミットです。

CHANGELOGへの追加はありませんでした。


Merge pull request #46112 from sambostock/remove-duplicate-datetime-precision-default

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

重複して行われていたdatetime precisionのdefaultの設定処理を削除しています。


Always provide a fallback renderer for Action Text

actiontext/lib/action_text/engine.rbactiontext/lib/action_text/rendering.rbの修正です。

Avoid loading ActionController::Base when rendering mailの修正の影響で、Action Textのrender処理でエラーになってしまうバグが発生してたのを修正しています。


Merge pull request #46111 from skipkayhil/generate-consistent-app-name

railties/lib/rails/generators/app_name.rbの修正です。

application nameの生成処理を、新規にRailsアプリを作成したときと、app:updateで更新処理を行ったときで同じ内容になるよう修正しています。

rails commit log流し読み(2022/09/23)

2022/09/23分のコミットです。

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

activerecord/CHANGELOG.md

actionpack/CHANGELOG.md


Merge pull request #46102 from Shopify/reloader-wrap-error

Active Supportの修正です。

ActiveSupport::Reloader.wrap内でエラーが発生した場合に、そのエラーがActiveSupport.error_reporterに2回登録されてしまうバグがあったのを修正しています。


Use explicit deprecator in wrappers tests

activesupport/test/deprecation/method_wrappers_test.rbactivesupport/test/deprecation/proxy_wrappers_test.rbの修正です。

Use explicit deprecator in AS::Deprecation testsと同様に、ActiveSupport::Deprecationのテストでテスト内で固有のdeprecatorを使用するよう修正しています。


Updates for Puma 6

actioncable/test/client_test.rbの修正です。

Action CableのテストがPuma 6系で動作するよう修正しています。


Take into account timeout limit when retrying queries

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

query retryのretry deadlineをconfigファイルで指定出来るよう修正しています。値は秒で指定出来るようになっており、指定した時間を超えた場合、リトライ回数が残っていても処理が行われないようになっています。

development:
  adapter: mysql2
  retry_deadline: 5 # 5秒後にクエリの再実行を停止

Add expires_at option to signed_id

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

signed_idメソッドに有効期限を指定する為のexpires_atオプションを指定出来るよう修正しています。


Use connection from #with_raw_connection in #quote_string.

activerecord/lib/active_record/connection_adapters/mysql2_adapter.rbactiverecord/lib/active_record/connection_adapters/postgresql/quoting.rbの修正です。

SQLの入力に使用する値をescapeする為のquote_stringメソッドで、reconnect及びretryの処理が実行されるよう修正しています。


Merge pull request #46110 from sambostock/virtual-datetime-column-precision

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

MySQLのvirtual datetime columnで、defaultのprecisionが設定されてなかったのを、通常のdatetime columnと同じ値が設定されるよう修正しています。


Merge pull request #46057 from jdufresne/assert-redirect-status

actionpack/lib/action_dispatch/testing/assertions/response.rbの修正です。

assert_redirected_toメソッドにhttp statusのチェックを行う為の:statusオプションを指定出来るよう修正しています


Add table to error for duplicate column definitions

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

migration実行時に、同じ名前のカラム名が定義されていた場合に出力するエラーメッセージに、テーブル名を含むよう修正しています。

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

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

CHANGELOGへの追加はありませんでした。


Do not write unchanged value to ActiveRecord::Store

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

store attributesのwrite処理で、値が変わって無い場合はwrite処理を行わないよう修正しています。


Merge pull request #46074 from skipkayhil/fix-app-plugin-generation-2

railties/lib/rails/app_updater.rbrailties/lib/rails/generators/app_name.rbの修正です。

Rails application配下でpluginのgeneratorを実行すると、dummy application作成時にエラーになってしまうバグがあったのを修正しています。


Merge pull request #46088 from skipkayhil/enable-skip-ensure

.rubocop.ymlの修正です。

Minitest/SkipEnsure copを有効化しています。