なるようになるブログ

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

rails commit log流し読み(2018/11/21)

2018/11/21分のコミットです。

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

actionpack/CHANGELOG.md

activemodel/CHANGELOG.md


Fix typo in development_dependencies_install.md [ci skip]

rails guideのDevelopment Dependencies Installの修正です。

everythingeverytingにタイポしていたのを修正しています。


Merge pull request #33954 from febeling/inconsistent-assignment-has-many-through-33942

Active Recordの修正です。

has_many through associationを使用して、collection=メソッドでrecordsを置き換える際に、recordsに同じrecordが含まている場合に、重複していたrecordがロストしてしまう、というバグがあったのを修正しています。


Raise an error on root route naming conflicts.

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

routingで同じcontextでrootが複数定義された場合に、後から定義された方が無視されてしまっていたのを、ArgumentErrorをraiseしてエラーにしてしまうよう修正しています。


Make connection handler per thread instead of per fiber

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

connection handlerがfiber毎に作られていたのを、thread毎に作成するよう修正しています。

fiberを使用しているアプリケーションがありそれが複数DBを使用している場合に、connectionを切り替える為にconnection handlerをスイッチした際に、同じスレッドで新しいfiberが実行され、結果違うconnection idが使用される(fiber毎にconnection handlerが管理される為)、という問題がった為、thread毎に作成するよう修正したとの事です。因みにGitHubで実際に問題になっていた(モンキーパッチをあてていたらしい)との事です。


Improve documentation for Hash#slice!

activesupport/lib/active_support/core_ext/hash/slice.rbのdocの修正です。

Hash#slice!メソッドのdoc内のexampleコードを、Hash自身の状態が変わることがわかるコードに修正しています。


Add slice! method to ActiveModel::Errors

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

ActiveModel::Errorsslice!メソッドを追加しています。Hash#slice!メソッドと同様に、引数に指定されたkey以外のエラーを削除するメソッドです。

person.errors.keys                  # => [:name, :age, :gender, :city]
person.errors.slice!(:age, :gender) # => { :name=>["cannot be nil"], :city=>["cannot be nil"] }
person.errors.keys                  # => [:age, :gender]

Remove odd spaces [ci skip]

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

Hash#slice!メソッドのdoc内のexampleの実行結果に、不要なスペースがあったのを削除しています。


Merge pull request #34491 from rails/fix-query-cache-on-multiple-connections

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

query cacheが全てのhandlerのconnectionに対して適応されるよう修正しています。