なるようになるブログ

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

rails commit log流し読み(2015/11/08)

2015/11/08分のコミットです。

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


Ensure #reset_column_information clears child classes as well

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

reset_column_informationメソッドが、子クラスで正しく動作しないバグがあったのを修正しています。

class Animal < ActiveRecord::Base
end

class Bird < Animal
end

上のようなクラス構成だった場合に、Animalにカラムを追加、及びreset_column_informationを呼び出した場合に、Birdクラスで追加されたカラムが使用出来ない、という問題が発生していたいました。


Fix test failures

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

先のreset_column_informationの対応で追加したテストがコケてしまっていたのを修正しています。テストで一時的にカラムを追加した後で、カラムの情報をresetするのが漏れていたので、処理を追加しています。


Merge pull request #21806 from kachick/fix-transformer-size

activesupport/lib/active_support/core_ext/hash/keys.rbactivesupport/lib/active_support/core_ext/hash/transform_values.rbの修正です。

Hash#transform_valuesHash#transform_values!Hash#transform_keysHash#transform_keys!メソッドでEnumeratorのsizeを返すよう修正しています。

# before
{ a: 'a', b: 'b' }.transform_values.size
# => nil

# after
{ a: 'a', b: 'b' }.transform_values.size
# => 2

do not override fetch on local cache

activesupport/lib/active_support/cache/strategy/local_cache.rbの修正です。

cache nil replies from backend cache so misses are fast too by grosser · Pull Request #22194 · rails/railsLocalStore#fetchメソッドを追加したのですが、 local cacheにfetchメソッドがあると本来の挙動が変わってしまうという事で、LocalStore#fetchメソッドを削除し、代わりにLocalStore#fetch_entryメソッドを追加し、そちらを使用するよう修正しています。


docs, ActiveRecord::TypeCaster is not part of the public API.

activerecord/lib/active_record/type_caster.rbactiverecord/lib/active_record/type_caster/connection.rbactiverecord/lib/active_record/type_caster/map.rbのdocの修正です。

TypeCaster module、及びその配下のクラスに:nodoc:を設定しています。


docs, ActiveRecord::JoinDependency is not part of the public API.

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

ActiveRecord::JoinDependency::Tableクラスに:nodoc:を設定しています。


docs, nodoc EnumType. [ci skip]

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

ActiveRecord::Enum::EnumTypeクラスに:nodoc:を設定しています。


docs, get rid of artifact in RecordFetchWarning docs.

ActiveRecord::Relation::RecordFetchWarning module内の、ActiveSupport::Notifications.subscribeメソッドを呼び出している箇所に:stopdoc:を設定しています。

メソッド配下では無く、module配下でメソッドを呼び出している為、:stopdoc:を設定してないと、ActiveRecord::Relation::RecordFetchWarning::ActiveSupportというdocが生成されてしまい、それを防ぐ為、との事です。


Update belongs_to.rb

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

ActiveRecord::Associations::Builder::BelongsTo.add_destroy_callbacksメソッドから、使用していないname変数を削除しています。


fix application_controller require_dependency path generated by api scaffold generator

railties/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rbの修正です。

apiのscaffold generatorで、namespace付きのcontrollerを生成する際に、namespaceに関わらず必ず同じapplication_controllerを読み込むよう修正しています。

Rails APPのgeneratorが元々その挙動になっており(Fixed the application_controller require_dependency path generated by… · rails/rails@686966a)、挙動を合わせる為修正しています。


Improve support for non Active Record objects on validates_associated

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

AssociatedValidatorのvalidate処理で、marked_for_destruction?メソッドを呼び出す前に、respond_to?メソッドが定義されているかどうかをチェックするよう修正しています。

associationsに、Active RecordのobjectではなくActive Model等のobjectを使用した場合に、marked_for_destruction?メソッドを定義しないでも処理が通るようにする為に、処理を追加したようです。