なるようになるブログ

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

rails commit log流し読み(2017/02/25)

2017/02/25分のコミットです。

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

activesupport/CHANGELOG.md


[close #24435] Send user_supplied_options to server

railties/lib/rails/commands/server/server_command.rbの修正です。

server_optionsメソッドが返す値に、ユーザが指定したオプションを格納する為のuser_supplied_optionsを追加しています。

Puma等のAPサーバがoptionsの値を取得した際に、その値がrailsが設定しているデフォルトの値なのか、ユーザが指定した値かが判別出来ない(:Portに3000と設定されていた場合に、railsのデフォルトにより設定された値なのかユーザがconfig等で指定した値なのかがわからない)為、それを判別出来るようにする為に追加したようです。これしかしAPサーバ側にも対応が必要そうな。


Change SystemTestCase.driven_by to use setup/teardown hooks

Action Packの修正です。

SystemTestCaseのdriverの設定を、setup / teardownでやるよう修正しています。

元々はtest caseのload時に設定が行われいたのですが、それだとtest case毎にdriverを切り替える、ということが出来なかった為、setup / teardownで行うよう修正したとの事です。


add optional second argument to ActiveSupport core extension for Marshal#load so it can take a proc

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

MarshalWithAutoloading#loadにprocを渡せるよう引数を追加しています。渡されたprocはそのままMarshal#loadの第二引数に渡されるようになっています。


Add missing gzip footer check in ActiveSupport::Gzip.decompress

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

ActiveSupport::Gzip.decompressメソッドでfooterのchecksumとlengthの値もチェックするよう修正しています。

     def self.decompress(source)
 -      Zlib::GzipReader.new(StringIO.new(source)).read
 +      Zlib::GzipReader.wrap(StringIO.new(source), &:read)
      end

参考:Gzip - ForensicsWiki


Fix CHANGELOG entry position [ci skip]

activesupport/CHANGELOG.mdの修正です。

先のActiveSupport::Gzip.decompressの対応のエントリーの位置がおかし(Rails 5.1.0.beta1に含まれているような書き方になっていた)かったのを修正しています。


Merge pull request #28157 from robin850/hwia-soft-deprecation

Active Support及びRails guideのA Guide for Upgrading Ruby on Railsの修正です。

top levelのHashWithIndifferentAccessがdeprecateになりました。今後はActiveSupport::HashWithIndifferentAccessを使う必要があります。

諸々の都合上deprecateメッセージは出ないようになっているのですが、将来削除されるようになっているので、ActiveSupport::HashWithIndifferentAccessを使うよう移行する必要があります。


Merge branch ‘jhawthorn-ruby_2_4_bigdecimal_casting’

activemodel/lib/active_model/type/decimal.rbの修正です。

BigDecimalのtype cast時に、不正なStringが渡された場合もエラーにならない(BigDecimal(0)を返す)よう修正しています。

-            when ::Numeric, ::String
+            when ::Numeric
               BigDecimal(value, precision || BIGDECIMAL_PRECISION)
+            when ::String
+              begin
+                value.to_d
+              rescue ArgumentError
+                BigDecimal(0)
+              end

BigDecimalは不正なString(e.g. 1ignore)が渡された場合もエラーにならないようになっていたのですが、Ruby 2.4.0でエラーをraiseするように挙動が変更された為、対応したとの事です。

なお、Ruby本体(というかbigdecimal gem)で、to_dがエラーをraiseしないよう修正が行われています。fixes issue: #13062 - String#to_d is not raising error


Use shasum 256 on the release

tasks/release.rbの修正です。

railsのリリース用タスクでhashにSHA-1を使用していたのを、SHA-256を使用するよう修正しています。


Order array contents to match Relation#first

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

Relation#firstメソッドのテストで、必ず期待通りの値がとれるよう、値を取得する前にidorderするよう修正しています。


Fix typo HashWithIndifferentAcces to HashWithIndifferentAccess [ci skip]

activesupport/CHANGELOG.mdの修正です。

先のtop levelのHashWithIndifferentAccessをdeprecateにした対応のエントリーで、HashWithIndifferentAccessHashWithIndifferentAccesにタイポしている箇所があったのを修正しています。


Imporove docs for Rails::AppGenerator [ci skip]

railties/lib/rails/generators/rails/app/app_generator.rbのdocの修正です。

Rails::AppBuilderのdocにexampleコードを追加しています。


[ci ckip] Fix example of resolve in CHANGELOG.md

actionpack/CHANGELOG.mdのdocの修正です。

resolveメソッドのexampleコードに不要なclassオプションがあったのを削除しています。