2016/08/28分のコミットです。
CHANGELOGへの追加はありませんでした。
Missing key should throw KeyError
actionpack/lib/action_dispatch/http/headers.rb
の修正です。
ActionDispatch::Http::Headers#fetch
に指定したkeyが存在しなかった場合に、KeyError
をraiseするよう修正しています。
Rails 4.2系まではKeyError
がraiseするようになっていたのですが、5.0.0でNameError
をraiseするよう誤って変更してしまっていた為、修正しています。
Move custom assertion to its proper place
activesupport/lib/active_support/test_case.rb
、
activesupport/lib/active_support/testing/assertions.rb
の修正です。
ActiveSupport::TestCase
クラスで定義されていたassert_nothing_raised
メソッドを、ActiveSupport::Testing::Assertions
moduleに移動しています。他のRails独自のassertionメソッドはActiveSupport::Testing::Assertions
に定義されており、他と合わせる為assert_nothing_raised
も移動したとの事です。
Fix typo in deprecation message
activemodel/lib/active_model/errors.rb
の修正です。
ActiveModel::Errors#add_on_blank
メソッドを使用した場合に出力されるdeprecationメッセージで、代わりに使用すべきメソッド内にタイポがあったのを修正しています。
- errors.add(attribute, :empty, options) if value.blank? + errors.add(attribute, :blank, options) if value.blank?
Fix typo in Delegation#delegate_missing_to doc [skip ci]
activesupport/lib/active_support/core_ext/module/delegation.rb
のdocの修正です。
delegate_missing_to
メソッドのdoc内にタイポがあったのを修正しています。
activerecord/lib/active_record/relation.rb
の修正です。
ActiveRecord::Relation#initialize_copy
、#values
メソッドでHashの複製を作成するのに、Hash[]
を使用していたのを、dup
メソッドを使用するよう修正しています。
def initialize_copy(other) - # This method is a hot spot, so for now, use Hash[] to dup the hash. - # https://bugs.ruby-lang.org/issues/7166 - @values = Hash[@values] + @values = @values.dup reset end
元々はHash.dup
を使用していたのですが、Hash.dup
が遅いため新規にHashのインスタンスを作成するようになっていました。が、Ruby 2.0.0でHash#initialize_copy
の高速化処理が入り、Has.dup
とHash[]
の速度差が縮まった為、再度dup
を使用するよう修正したとの事です。
参考:Bug #7166: Speed up Hash#dup by patching Hash#initialize_copy - Ruby trunk - Ruby Issue Tracking System、* hash.c (initialize_copy): copy the underlying st_table on dup, · ruby/ruby@b3803cc
Add test for allow_blank in numericality validation
activemodel/test/cases/validations/numericality_validation_test.rb
の修正です。
validates_numericality_of
にallow_blank
オプションを指定した場合のテストを追加しています。
validate_each in NumericalityValidator is never called in this case.
activemodel/lib/active_model/validations/numericality.rb
の修正です。
ActiveModel::Validations::NumericalityValidator#validate_each
メソッドからallow_nil
が設定されている、かつ、valueがnilの場合の処理を削除しています。該当の場合のチェック処理はEachValidator#validate
ですでに行われており、NumericalityValidator#validate_each
でその場合の処理が行われる事は無い為、との事です。
activerecord/lib/active_record/table_metadata.rb
の修正です。
ActiveRecord::TableMetadata#resolve_column_aliases
メソッドでHashの複製を作成するのに、Hash[]
を使用していたのを、dup
メソッドを使用するよう修正しています。理由は先程のコミットと同様。
Remove "Under Ruby 1.9" [ci skip]
activerecord/lib/active_record/core.rb
のdocの修正です。
ActiveRecord::Core#to_ary
メソッドのdocにあるなぜto_ary
を追加しているのかについて説明している箇所から、"Under Ruby 1.9"という部分を削除しています。
不要なmethod_missing
が呼ばれるのを防ぐ為にto_ary
を追加しているのですが、この対応自体は現状も必要な為、コメントはそのまま不要な部分(Ruby 1.9以下だけではないので)を削除しています。