なるようになるブログ

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

rails commit log流し読み(2019/02/21)

2019/02/21分のコミットです。

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


Deprecate ActionView::PathSet as argument to ActionView::Base.new

actionview/lib/action_view/base.rbの修正です。

ActionView::Base.newActionView::PathSetインスタンスを渡した場合に、NotImplementedErrorがraiseされてしまっていたのを、deprecateメッセージを表示 + 正しく動作するよう修正しています。下位互換の為。


Reduce unused allocations when casting UUIDs for Postgres

activerecord/lib/active_record/connection_adapters/postgresql/oid/uuid.rbの修正です。

uuidのcast処理でString#[]メソッドを使用していたのを、String#match?を使用するようリファクタリングしています。オブジェクトの生成を減らせるようにする為。


More exercise test cases for order by table name qualified column name

activerecord/test/cases/base_test.rbの修正です。

テーブル名 + カラム名orderした場合のテストを追加しています。


[ci skip] actionview typo fixes.

actionview/app/assets/javascripts/rails-ujs/utils/event.coffeeactionview/lib/action_view/base.rbの修正です。

各箇所のタイポを修正しています。


Explains a detail re eager loading [ci skip]

railties/lib/rails/application/finisher.rbの修正です。

Zeitwerkのeager load処理について、コメントを追加しています。


Merge pull request #35344 from eugeneius/active_storage_require_core_ext

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

不足していたactive_support/core_ext/numeric/timeのrequireを追加しています。


Revert "Speed up integer casting from DB"

deserialize処理で、高速化の為に値をto_iで変換するようにした、Speed up integer casting from DBをRevertしています。

この変更の影響で空のStringが指定された場合の挙動が変わってしまったのと、実装が変わった現在ではこの処理によるメリットは少なくなった為、という理由でRevertしています。


Fix lint ShadowingOuterLocalVariable

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

"shadowing outer local variable"のwarningが出ている箇所があったので、変数名を適切な名前に修正し対応しています。


Extract default_uniqueness_comparison to ease to handle mismatched collation issues

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

uniqueness validatorでcase_sensitive: trueオプションを強制的に指定していたのをやめて、比較に関する処理をメソッド(default_uniqueness_comparison)に切りだすよう修正しています。

MySQLのデフォルトのcollationはcase insensitiveなので、uniqueness validatorで強制的にcase_sensitive: trueオプションを指定してしまうと、照合ミスにがおき結果想定外の挙動になる、という問題がよくおきていました。

そのため、この比較処理の挙動をconnection毎に制御出来るようにする為に、メソッドに切り出しています。


Address "warning: in `column': the last argument was passed as a single Hash"

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

columnadd_columnメソッドで引数の指定にdouble splat operatorを使用するよう修正しています。the last argument was passed as a single Hashのwarning対応。


Define Rails.autoloaders.logger=

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

Rails.autoloaders#logger=メソッドを追加しています。

autoloader自体にdebug logの出力処理がまだあるわけではないのですが、今後の作業用にとりあえずloggerを指定出来るようにしたようです。


Merge pull request #35336 from kamipo/dont_allow_non_numeric_string_matches_to_zero

Active Recordの修正です。

integer型のカラムにStringを指定してwhereを実行した場合(e.g. where(id: "not-a-number"))に、値が0のデータが結果に一致しまっていたのを、一致しないよう修正しています。


Should not pass extra args to _update_record

Active Recordの修正です。

Timestamp#_update_recordメソッドに不要な引数を渡さないようリファクタリングしています。