なるようになるブログ

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

rails commit log流し読み(2016/07/12)

2016/07/12分のコミットです。

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

activesupport/CHANGELOG.md


Fix Active Record test failure

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

先日行われたgroup + calculationメソッドを使用した場合にadapterによって結果のHashのkeyがtype castされてない状態になってしまっているというバグを修正した対応(Always prefer class types to query types when casting group)で、テストの内容に誤りがあったのを修正しています。


AS::Duration should serialize empty values correctly. (#25656)

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

ActiveSupport::Duration::ISO8601Serializerに0を指定した場合に、予期せぬエラーが発生してしまうバグがあったのを修正しています。

# before
ActiveSupport::Duration.parse(0.minutes.iso8601)
# => ActiveSupport::Duration::ISO8601Parser::ParsingError: Invalid ISO 8601 duration: "-P" is empty duration

# after
ActiveSupport::Duration.parse(0.minutes.iso8601)
# => 0 seconds

値が0のときに、ActiveSupport::Duration::ISO8601Serializer#serializeが返す値に誤りがあった為エラーになっていました(PT0Sを返すべきが、Pを返してしまっていた)。


Merge pull request #25735 from timrogers/actioncontroller-parameters-dup

actionpack/lib/action_controller/metal/strong_parameters.rbの修正です。

ActionController::Parameters#dup@parametersdupされないなかったのを、@parametersdupするよう修正しています。

params = ActionController::Parameters.new(foo: "bar")
duplicated_params = params.dup
duplicated_params.delete(:foo)

params == duplicated_params  #=> trueになっていた

#initialize_copyを追加し、そこで@parametersdupするよう修正しています。


Remove duplicate test and fix a typo in the test

actionpack/test/controller/parameters/dup_test.rbactionpack/test/controller/parameters/parameters_permit_test.rbの修正です。

テスト名でtotpにタイポしている箇所があったのを修正、及び重複していたテストを削除しています。


Raise ArgumentError for bad strptime arguments

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

ActiveSupport::TimeZone#strptimeに不正な値を渡した場合に、NoMethodError(undefined method empty?' for nil:NilClass)になってしまっていたのを、ArgumentError`(invalid date)を返すよう修正しています。

# before
ActiveSupport::TimeZone['Eastern Time (US & Canada)'].strptime('1999-12-31', '%Y/%m/%d')
#=> NoMethodError: undefined method `empty?' for nil:NilClass

# after
ActiveSupport::TimeZone['Eastern Time (US & Canada)'].strptime('1999-12-31', '%Y/%m/%d')
# => ArgumentError: invalid date

Ruby本体のDate#parseと挙動合わせるようになっています。


rails -> Rails [ci skip]

各docの修正です。railsRails(先頭大文字)にまとめて修正しています。


Merge pull request #25690 from robin850/speed-up-rdoc

railties/lib/rails/api/task.rbの修正です。

Rails本体のdocを生成する際、既に作成済みのdocは再作成しないよう修正しています。doc作成処理の高速化の為に、とのことです。


[ci skip] Update redirecting links in guides

各guideの修正です。

Active Record Migrations — Ruby on Rails Guidesへのリンクが誤っている(古いリンク先を指定していた)箇所があったのを修正しています。


Missing require 'active_support/multibyte/unicode'

activesupport/lib/active_support/core_ext/string/output_safety.rbの修正です。

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