なるようになるブログ

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

rails commit log流し読み(2017/02/07)

2017/02/07分のコミットです。

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

activemodel/CHANGELOG.md

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Remove ActiveModel::TestCase from lib

activemodel/lib/active_model.rbactivemodel/lib/active_model/test_case.rbの修正です。

Active Modelのテストでしか使用されていないActiveModel::TestCaseクラスをlibから削除しています。


Remove useless MySQL::Column tests

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

MySQL::Columnのテストから、data typeがbinary、blob、textだった場合のデフォルト値についてのテストを削除しています。

元々non-strict Modelの場合に上記typeの場合のみデフォルトを空文字として扱う、という特殊な処理が入っており、その確認の為のテストだったようなのですが、その対応はRemove text default treated as an empty string in non-strict modeで削除されており、strict / non-strict modeによる挙動の違いのテストは違うテストでカバーされている為、こちらのテストは削除したとの事です。


Deprecate ColumnDumper#migration_keys

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

ColumnDumper#migration_keysメソッドがdeprecateになりました。

ColumnDumper#migration_keysメソッドは元々schema.rbのcolumnの幅調整の対象となるオプションをカスタマイズ出来るようにする為にpublic APIとして公開されていたのですが、Remove the SchemaDumper options and change the default behaviorでそもそもschema.rbの自動整形が行われなくなり、public APIにしておく理由が無くなった為、deprecateにしたとの事です。


Merge pull request #27389 from kamipo/fix_mysql_pk_dumping_correctly

Active Recordの修正です。

primary keyのデフォルトをBIGINTに変える対応(Change Default Primary Keys to BIGINT)の影響で、Rails 5.1より前に生成されたmigirationファイルについてもprimary keyの生成結果が変わるようになってしまっていたのを、古いmigrationファイルについては以前と同じ結果を生成するよう修正しています。

定義毎に生成されるPKの詳細についてはPRにある表をご参照。大変わかりやすく有り難や。


primary_key and references columns should be identical type

Active Recordの修正です。

こちらもChange Default Primary Keys to BIGINTのフォローアップ対応で、Rails 5.1より前に生成されたmigirationファイルでreferencesメソッドを使用している場合に、bigintではなくinteger型になるよう修正、及び、sqlite3 adapterについてはreferencesメソッドで引き続きinteger型でschemaが生成されるよう修正しています。SQLitenにはbigintが無い為、ですかねえ。ちょっと不安。


Remove useless column_alias in subquery_for_count

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

Calculations#build_count_subqueryメソッドでcount用のqueryを生成する際に、column aliasを使用するようになっていたのを使用しないよう修正しています。

ユーザがselectにcolumn aliasを指定していた場合(e.g. Post.select("id, some_property IS NOT NULL AS with_comment").limit(5).count)に、不正なSQLが生成されエラーになってしまっていた為、削除したとの事です。

が、テストが壊れてしまった為、後ほどrevertされています。


Merge pull request #26378 from kamipo/decouple_building_arel_ast_for_uniqueness_validator

Active Recordの修正です。

UniquenessValidator#build_relationメソッド内でArel ASTの構築を行っていたのを、Relation::WhereClauseFactoryクラスにAST構築用メソッド(#build_for_case_sensitive)を追加し、そちらで行うよう修正しています。


Merge pull request #27922 from martijn/reduce-actioncable-logging

actioncable/lib/action_cable/channel/base.rbactioncable/lib/action_cable/server/broadcasting.rbの修正です。

transmit及びbroadcastに関するログのログレベルがinfoになっていたのを、debugに変更しています。ログが出過ぎるのを防ぐ為、のようです。


Revert “Remove useless column_alias in subquery_for_count

先ほどコミットされた、Remove useless column_alias in subquery_for_countをrevertしています。理由は先ほど書いた通り。


Merge pull request #27608 from kamipo/remove_deprecated_passing_string_to_define_callback

deprecatedになっていた、callbackの定義にStringを使用出来るようにする為の処理が削除されました。今後Stringを渡した場合、ArgumentErrorがraiseされるようになっています。

合わせて、set_callbackskip_callbackメソッドの:if及び:unlessオプションにStringを渡す(e.g.klass.skip_callback :save, :before, :tweedle, if: "true")のがdeprecateになりました。


Improve the exception message to direct people to all the possible values

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

callbackを定義する際にStringが渡された場合に出力するエラーメッセージに、渡せる値については.set_callbackのdocを参照するようメッセージを追加しています。


Document that string in if and unless option of callbacks are deprecated

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

set_callbackメソッドのdoc内の:if:unlessオプションについて説明している箇所に、Stringを渡すのはdeprecateである旨メッセージを追加しています。