なるようになるブログ

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

rails commit log流し読み(2018/02/18)

2018/02/18分のコミットです。

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

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Rails 6 requires Ruby 2.3+

private attribute?のwarningが出る為protectedを使用していた箇所をprivateを使用するよう修正、Ruby 2.2以下の為のコードを削除等行っています。


Multipart file uploads are very rare in API only apps so don't include Rack::TemfileReaper in default middleware stack for API only apps

railties/lib/rails/application/default_middleware_stack.rbの修正です。

API only appsのdefault middleware stackからRack::TempfileReaperを削除しています。

API only appsでファイルアップロードするのはレアケースだと思われる為、デフォルトでは不要だろうとの事で削除されています。


Remove extra conditions in HWIDA since Rails 6 does not support Ruby 2.2

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

dig、及び、fetch_valuesメソッドを定義する際に、Hashにそれらのメソッドが定義されているかチェックしていたのを削除しています。

Ruby 2.3では必ずメソッドが定義されている為。


Partly revert 1e526788e6b1d3f42f4d8fdca20e588d42838c80

actionpack/lib/action_dispatch/http/mime_type.rbactiverecord/lib/active_record/type/adapter_specific_registry.rbの修正です。

先のprotectedからprivateに変更した対応で、privateに変更してはいけない箇所まで修正していたので、一部protectedに戻しています。


Deprecate update_attributes and update_attributes!

Active Recordの修正です。

update_attributes、及び、update_attributes!メソッドがdeprecateになりました。今後はupdateupdate!メソッドを使用するよう必要があります。

updateupdate!メソッド追加された際(Rename update_attributes method to update)にupdate_attributes(!)は"soft deprecation" という扱いになっていたのですが、バージョンも大分上がったし、正式にdeprecateにして良いだろう、という事になりました。


Clean up and consolidate .gitignores

ディレクトリトップの.gitignoreに色々とまとめて記載されいたのを、各コンポーネントで共通で使用するものだけを定義し、各コンポーネント固有で必要な記載は各コンポーネント.gitignoreに記載するよう整理しています。合わせて、.gitignoreに記載が漏れていたファイルの追加等を行っています。


Remove require Object#blank? monkey patch

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

不要なactive_support/core_ext/object/blankのrequireを削除しています。


Rails 6 requires Ruby 2.4.1+

色々と相談があった結果、とりあえずRails 6がサポートするバージョンはRuby 2.4.1以上となった為、required_ruby_version>= 2.4.1に修正、Ruby 2.3以下向けのコードを削除等をまとめてお粉ています。


Fixes typos

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

executorexectorに、parallelizationparalleliztionにそれぞれタイポしていたのを修正しています。


Fix "warning: BigDecimal.new is deprecated"

activejob/test/cases/argument_serialization_test.rbの修正です。

deprecateになっているBigDecimal.newを使用している箇所があったのを、BigDecimalを使用するよう修正しています。


Document :reconnect_attempts option for Redis Cache Store [ci skip]

rails guideのCaching with Rails: An Overviewの修正です。

ActiveSupport::Cache::RedisCacheStoreの項に、デフォルトではRedisへの接続に失敗した場合に再接続は試みない事についての説明を追加、及び、reconnect_attemptsオプションについての説明を追加しています。


Update bug report templates

bug report templatesの修正です。

bug report templatesで指定している各gemのバージョンを5.1.0から5.2.0.rc1に修正しています。


String#strip_heredoc preserves frozenness

freeze済みのStringに対してstrip_heredocを呼び出した場合、unfrozenなStringが返ってきていたのを、Stringも元のfrozennessを維持するよう修正しています。

# before
"foo".freeze.strip_heredoc.frozen?
# => true


# after
"foo".freeze.strip_heredoc.frozen?
# => true

String#truncate_bytes: limit to N bytes without breaking multibyte chars

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

マルチバイト文字の状態を壊さずにStringをtruncateする為のtruncate_bytesメソッドを追加しています。

"🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".size
# => 20
"🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".bytesize
# => 80
"🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪🔪".truncate_bytes(20)
# => "🔪🔪🔪🔪…"

この対応を行ったPR自体は2016/12に作成されていました。しかし、grapheme clusterの解析に\Xメタ文字を使用しており、Ruby 2.3までは\X絵文字を含む文字等が正しパース出来なかった為マージされていませんでした。Ruby 2.4では左記の問題が無い、masterはRuby 2.4以上のみをサポートするようになった為ようやくマージされました。

参考:Feature #12831: /\X/ (extended grapheme cluster) can't pass unicode.org's GraphemeBreakTest


Travis: fix that major.minor version doesn't track latest major.minor.tiny

.travis.ymlの修正です。

CIで使用するRubyのバージョンにマイナーバージョンも指定するよう修正しています。

マイナーバージョンの指定が無いと最新のバージョンでテストされない為(2.4とだけ記載すると、2.4.1が実行されてしまう)。


Revert "Delegate uniq to records"

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

ActiveRecord::Relationrecordsdelegateするメソッドの一覧にuniqを追加した、Delegate uniq to recordsをrevertしています。

Enumerable#uniqRuby 2.4で追加されており、そちらのメソッドがを使用すれば良い為。


Fix active_job_basics.md callbacks example [ci skip]

rails guideのActive Job Basicsの修正です。

around_cleanupメソッドのexampleから不要なjob引数を削除しています。


Association scope's own order should be prioritized over through scope's order

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

through associationの先のscopeのorderが自身のscopeのorderより先に評価されていたのを、自身のorderが先に評価されるよう修正しています。

Association scope's own order should be prioritized over through scop…でscope評価の順番を変更した事による影響だったのですが、sorting orderについては元通り(自身が先に評価される)の方が良いだろう、という事で修正しています。