なるようになるブログ

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

rails commit log流し読み(2017/05/28)

2017/05/28分のコミットです。

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

activemodel/CHANGELOG.md

activesupport/CHANGELOG.md


Includes namespace in system test skelton when namespace is specified

railties/lib/rails/generators/test_unit/system/system_generator.rbの修正です。

system testを生成する際に、namespaceが指定されている場合はファイル名にnamespaceを含むよう修正しています。


Merge pull request #29249 from bradleypriest/numericality-precision-regression

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

numericality validatorでDecimal、Floatの値をチェックする際に、schemaに定義されているscaleより大きな値のチェック処理が正しく行われないバグがあったのを修正しています。


Merge pull request #28895 from codeforkjeff/fix-session-keys-and-values-methods

actionpack/lib/action_dispatch/request/session.rbの修正です。

Request::Session#keys#valuesメソッドで他のメソッド同様に、値を取得する前にsessionのload処理を行うよう修正しています。


Remove double Thread.current storage.

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

current threadに複数の値を別々("current_attributes_for_#{name}"current_attributes_instances)のkeyで格納していたのを、current_attributes_instancesのvalueをHashにして、一つのkeyに値をまとめて格納するよう修正しています。


Make reset execution assertions easier to read.

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

ActiveSupport::CurrentAttributesのreset処理が行われることを確認するテストで、テスト結果を取得する為に別途結果確認用のスクリプトを別に準備していたのを、Rails.application.executorを直接呼び出してテストするよう修正しています。


Clear all current instances before a reload.

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

classのreload時にCurrentAttributesで保持している情報をresetするよう修正しています。

CurrentAttributesの子クラスにattributeを追加したり、何か他の変更があった場合、情報がそのままだとpage load時にexceptionが発生してしまう(ActiveSupport::CurrentAttributes.current_instancesは変更前のインスタンスの参照を保持しているから)為。


Bump delayed_job_active_record gem

Gemfile.lockの修正です。

delayed_job_active_recordのバージョンを4.1.3に更新しています。


Bring back delayed_job to test list

activejob/Rakefileの修正です。

Active Jobのテスト対象にdelayed_jobを戻しています。

delayed_job_active_record 4.1.3でRails 5.1をサポートした為。


Merge pull request #29250 from kamipo/remove_unused_association_interpolate

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

使用していないAssociation#interpolateメソッドを削除しています。


Merge pull request #29197 from kamipo/enable_extending_even_if_scope_returns_nil

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

scopenilを返す場合、Association extensionsが有効化されなかったのを、nilを返す場合も有効化されるよう修正しています。


Merge pull request #29097 from EilisHamilton/fix_uncountable_pluralization_locale

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

#singularize#pluralizeメソッドでuncountableかどうかをチェックする際に、#singularize#pluralizeメソッドに指定されたlocaleを使用するよう修正しています。

元々は#singularize#pluralizeが使用する#apply_inflectionsメソッドでlocaleを使用しない(内部的にデフォルトでenを使用するようになっているので、enが使われていた)ようになっていたのですが、#apply_inflections`メソッドの引数にlocaleを追加し、渡された値を使用するよう対応しています。


Prevent extra current_database query for encoding/collation/ctype

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

PostgreSQL::SchemaStatements#encodingcollationctypeメソッドでdatabase名を取得するのにシステム情報関数のcurrent_database()を直接使用するよう修正しています。余計なqueryを発行しないようにする為。

-          select_value("SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname LIKE '#{current_database}'", "SCHEMA")
+          select_value("SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = current_database()", "SCHEMA")

元の処理だとSELECT current_database()が実行されてしまっていた為、上記のように修正しています。


Merge pull request #29003 from kamipo/delegate_ast_and_locked_to_arel_explicitly

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

ActiveRecord::Delegation moduleでastlockedメソッドをareldelegateするよう修正しています。

元々astlockedメソッドはarelに定義されているメソッドを使う必要があったのですが、method_missingarelのメソッドを呼ぶ出すようになっていました。ただそれだとmodel classにastlockedメソッドが定義さてしまった場合に正しくarelのメソッドが呼ばれない為、明示的にdelegateするようにしています。


Merge pull request #28969 from kamipo/refactor_enum_to_use_value_instead_of_label

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

enumが生成するscopeでlabelではなくvalueを使用するよう修正しています。

labelのままだと、値がnilenumが生成するSQLが誤ったSQLになってしまう為。多分。


Remove mentions of deprecated callbacks on ActionDispatch::Callbacks

rails guideのConfiguring Rails Applicationsの修正です。

既に存在しないActionDispatch::Callbacks.to_prepareメソッドについての説明が残ってしまっていたのを削除しています。