なるようになるブログ

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

rails commit log流し読み(2017/01/16)

2017/01/16分のコミットです。

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

railties/CHANGELOG.md

activerecord/CHANGELOG.md


Revert "bundle u mocha"

mocha gemのバージョンを1.2.1に更新した、bundle u mochaをrevertしています。Active Recordのテストがコケてしまうようになった為。


Don't guard against touch: [].

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

counter cacheの更新処理でtouch_updatesが空の場合のガード処理を削除しています。

-          touch_updates = touch_updates(touch)
-          updates << sanitize_sql_for_assignment(touch_updates) unless touch_updates.empty?
+          updates << sanitize_sql_for_assignment(touch_updates(touch))

ここでtouch_updatesempty?になるのはtouchオプションに空配列(touch: [])を指定したようなケースで、わざわざガード処理を入れる必要は無いだろう、という事で削除されています。

が、上記ケース以外に、modelにupdate timestamp attributes(e.g. updated_atupdated_on)が無い場合にもtouch_updatesは空になり、そちらはガードすべきケースなので、後ほどrevertされています。


Revert "Merge pull request #27686 from koic/friendly_bigdecimal_inspect"

BigDecimalのexampleコードを表示している箇所にRuby 2.4.0の場合の出力例を追加した、Several representation of BigDecimal has changed in Ruby 2.4.0+ [ci skip]をrevertしています。

2つの例を追加すると混乱する可能性がある、かつ、RailsのmasterはまだRuby 2.2.2をサポートしている為、古い方の結果を載せておいた方が良いだろう、という判断の為のようです。


Merge pull request #27618 from kamipo/fix_uuid_default_nil

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

primary keyに:uuidを使用している場合に、defaultオプションを使用しているかどかのチェックに[]メソッドを使用していたのを、key?メソッドを使用するよう修正してます。

-            if options[:id] == :uuid && !options[:default]
+            if options[:id] == :uuid && !options.key?(:default)

defaultオプションにはnilを指定する事が出来る為、[]メソッドだと値がnilの場合に正しくチェック出来ない為。


Merge pull request #27601 from y-yagi/make_work_all_commands_from_engine

railtiesの修正です。

raile engineの中から、serverconsoledbconsolerunnerコマンドを使用出来るよう修正しています。


Revert "Don't guard against touch: []."

counter cacheの更新処理でtouch_updatesが空の場合のガード処理を削除した、Don't guard against touch: [].をrevertしています。理由は上記の通り。


Merge pull request #27683 from eugeneius/update_counters_empty_touch_test

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

update_countersメソッドのtouchオプションに空配列(touch: [])を指定した場合のテストを追加しています。


Should do nothing here

activesupport/test/string_inquirer_test.rbの修正です。

StringInquirer#respond_to_missing?が親クラスにフォールバックする事を確認するテストで、テストの後処理でrespond_to_missing?を再定義する際に、不要な処理が含まれてしまっていたのを、削除しています。


Add missing require

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

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


Revert "significant speedup of AC::Parameters#permit" [26dd9b26ab7317f94fd285245879e888344143b2] as it broke Parameters#to_h on at least fields_for-style nested params.

ActionController::Parameters#permitの高速化を行った、significant speedup of AC::Parameters#permitをrevertしています。

fields_for-styleのnestしたparamsに対してto_hメソッドを呼び出した際に正しい値が取得出来なくなってしまった為、revertしたとの事です。


Added test to ensure that we dont break #to_h again when trying to restore the speed-up from 26dd9b26ab7317f94fd285245879e888344143b2 (cc: @fxn)

actionpack/test/controller/parameters/nested_parameters_permit_test.rbの修正です。

fields_for-styleのnestしたparamsに対してto_hメソッドを呼び出した際の結果を確認するテストを追加しています。


Translate Foreign Key violation to the specific exception for SQLite3 adapter

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

外部キー制約違反でデータの挿入 / 更新に失敗した場合に、SQLite3 adapterでもActiveRecord::InvalidForeignKeyをraiseするよう修正しています。


Allow SQLServerAdapter to opt into a few tests.

Actie Recordのテストの修正です。

幾つかのテストで、SQLServerAdapterでもテストが通るよう、adapterのチェック処理を修正しています。

-    if current_adapter?(:PostgreSQLAdapter)
+    if current_adapter?(:PostgreSQLAdapter, :SQLServerAdapter)

Merge pull request #27699 from kenta-s/update-comment-for-scrubber-usage

actionview/lib/action_view/helpers/sanitize_helper.rbのdocの修正です。

ActionView::Helpers::SanitizeHelper moduleのdoc内の独自のHtml scrubberを作成する場合のexampleコードが古いままにっていたのを更新しています。