なるようになるブログ

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

rails commit log流し読み(2017/12/20)

2017/12/20分のコミットです。

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

activemodel/CHANGELOG.md

activerecord/CHANGELOG.md


Fix validation callbacks on multiple context

activemodel/lib/active_model/validations/callbacks.rbの修正です。

before_validation / after_validationに複数のcontextを指定した場合に、正しく動作しないバグがあったのを修正しています。


Fix count(:all) to correctly work distinct with custom SELECT list

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

count(:all) + distinct + SELECTに任意のリストを指定した場合に、正しく値が取得出来ないバグがあったのを修正しています。


Merge pull request #31177 from albertoalmagro/remove-default-mysql-engine-from-ar-5-2

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

MySQL adapterでtableをcreateする際に、ENGINE=InnoDBを明示的に指定していたのを、指定しないよう修正しています。

MySQL 5.5以上やMariaDBではInnoDBがデフォルトになっており、明示的に指定する必要はもう無いだろうという事で削除されました。


Remove verbose_query_logs from new_framework_defaults_5_2.rb

activerecord/lib/active_record/log_subscriber.rbrailties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.ttの修正です。

使用していない値の削除、及び、config.active_record.verbose_query_logsの指定をnew_framework_defaults_5_2.rb.ttから削除しています。

app:updateでアプリを更新した場合、config/environments/development.rb上記configは指定されるようになっており、new_framework_defaults_5_2.rbのほうには不要な為。


Place args normalization from left_outer_joins to left_outer_joins!

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

left_outer_joinsメソッドで行っていたargumentのノーマライゼーションを、left_outer_joins!メソッドでやるよう修正しています。

他のメソッドではbangメソッドでノーマライゼーションを行っており、処理を合わせる為。


Remove passing needless empty string options in create_table

activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rbactiverecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rbの修正です。

CREATE TABLEのオプションに不要なスペースが含まれてしまっていたのを削除しています。


Fix Illegal parameter data type bigint for operation 'get_lock' error

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

get_advisory_lockrelease_advisory_lockメソッドでGET_LOCK / RELEASE_LOCKを実行する前に、lock_nameto_sでStringに変換してから使用するよう修正しています。

      def get_advisory_lock(lock_name, timeout = 0) # :nodoc:
-        query_value("SELECT GET_LOCK(#{quote(lock_name)}, #{timeout})") == 1
+        query_value("SELECT GET_LOCK(#{quote(lock_name.to_s)}, #{timeout})") == 1
       end

lock_nameにはintegerが渡されていたのですが、MariaDBではGET_LOCKを渡すとエラーになってしまう為、Stringに変換するようにしたとの事です。


Add test case that configure config.active_support.hash_digest_class

railties/test/application/configuration_test.rbの修正です。

config.active_support.hash_digest_classを指定した場合のテストを追加しています。


Handle FrozenError if it is available

テストの修正です。

Ruby 2.5からfreeze されたオブジェクトの変更で発生する例外がRuntimeErrorからFrozenErrorに変更になった為、オブジェクトを変更した際に例外が発生する事を確認するテストで、RuntimeErrorではなくFrozenErrorがraiseされる事を確認するよう修正しています。