なるようになるブログ

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

rails commit log流し読み(2020/05/03)

2020/05/03分のコミットです。

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

actionpack/CHANGELOG.md


Remove require_dependency usage in helper [Closes #37632]

helperメソッドでhelper moduleをロードする際に、require_dependencyを使用していたのを、String#constantizeを使用してのロードを使用するよう修正しています。

require_dependencyに依存していると、autoload pathsを$LOAD_PATHに追加する必要があり、それを避ける為(config.add_autoload_paths_to_load_pathにfalseを指定出来るようにする為)。

これにより、helper "foo/bar"とした場合、

require_dependency "foo/bar_helper"
module_name = "foo/bar_helper".camelize
module_name.constantize

という挙動になっていたのが、

prefix = "foo/bar".camelize
"#{prefix}Helper".constantize

となっています。通常のユースケースでは恐らく問題ないですが、autoload pathsには存在しないが$LOAD_PATHにのみ指定していたhelper pathにあるhelperをロードするような場合に影響があります。


Fix typo

actionpack/test/abstract_unit.rbactionpack/test/controller/helper_test.rbの修正です。

TestTesにタイポしていたのを修正しています。


Fix actionview tests for missing helper

actionview/test/abstract_unit.rbactionview/test/actionpack/abstract/helper_test.rbの修正です。

先のhelperメソッドの挙動変更の対応によりAction Viewのテストがエラーになってしまっていたのを修正しています。


Allow associations to be autosaved multiple times

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

associationのautosaveが必ず一回しか実行されなくなってしまっていたのを、複数回実行されるよう修正しています。

save後にtransactionをrollbackしsaveを無効化し再度saveを行う、というような場合に実行されるようにする為。


Extract build_cast_value for limit_value and offset_value

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

LIMITOFFSETのcast valueのbuild処理をメソッドに切り出しています。


Don't use deprecated column in the error message

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

エラーメッセージ内でdeprecateになったcolumnを使用している箇所があったのを、使用しないよう修正しています。


Refactor preparable to be had the state in Arel collectors

Active Recordの修正です。

preparableかどうかの情報を専用のmoduleで保持していたのを、Arel collectorsで保持するよう修正しています。


Fix random CI failure due to non-deterministic has_one record

activerecord/test/models/company.rbの修正です。

テスト用のクラスのhas_one associationにorderの指定を追加しています。結果が不定になるのを避ける為。