2017/02/07分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
activemodel/CHANGELOG.md
- Raise
ArgumentError
when passing string to define callback. - Deprecate passing string to
:if
and:unless
conditional options onset_callback
andskip_callback
.
Remove ActiveModel::TestCase
from lib
activemodel/lib/active_model.rb
、activemodel/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.rb
、
actioncable/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_callback
、skip_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である旨メッセージを追加しています。