なるようになるブログ

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

rails commit log流し読み(2019/09/04)

2019/09/04分のコミットです。

CHANGELOGへの追加はありませんでした。


Do not set response "Vary" header if it has already been set

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

controllerでVary headerを指定していた場合に、_set_vary_headerメソッドで再度Vary headerを指定しないよう修正しています。


Fix typo [ci skip]

rails guideのAutoloading and Reloading Constants (Classic Mode)の修正です。

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


Do not enforce no braces for hash argument

Hashを非キーワード引数として渡す際に{}で囲むようになった件と、Style/BracesAroundHashParameters copは内容が相反しているため、Style/BracesAroundHashParameters copは削除しています。

合わせて、rubocopの設定に違反している箇所があったのをまとめて修正しています


Add a test for select argument error with block

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

select + blockを指定した場合にArgumentErrorになる事を確認するテストを追加しています。


No need to synchronize for just reading an ivar, at least in MRI

activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rbの修正です。

ConnectionPool::Queue#num_waitingメソッドでインスタンス変数を参照する際にsynchronize排他制御を行っていたのを、MRIでは排他制御を行わないよう修正しています。

MRIではインスタンス変数を参照するだけならsynchronizeは不要(GVLがある為)な為。JRubyについては本当に不要かどうかはわからないのでそのまま(synchronizeを使用する状態)になっています。


Ivar += in MRI is thread safe

activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rbの修正です。

with_new_connections_blockedメソッドでインスタンス変数に対して+=を行う際にsynchronizeを使用していたのを、MRIでは使用しないよう修正しています。MRIでは+=はスレッドセーフになっている為。


Merging options donesn't have to be synchronized

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

modify_valueメソッドでオプションのマージ処理も排他制御の対象になっていたのを、必要な箇所だけ排他制御行うよう修正しています。


No need to synchronize for just reading an ivar, at least in MRI

actionpack/lib/action_dispatch/http/response.rbの修正です。

Responseクラスでインスタンス変数を参照する際にsynchronize排他制御を行っていたのを、MRIでは排他制御を行わないよう修正しています。


Passing in a Hash instance as kwargs parameters requires the "double splat" prefix

Active Modelの修正です。

Hashをキーワード引数として渡す際にdouble splatを指定するよう修正しています。


The super_method at Type::Value takes kwargs

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

initializeでキーワード引数を受け取れれるよう引数指定を修正しています。


Include kwargs definition in the generated method signatures and method calls

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

attribute methodsを定義する際にキーワード引数を受け取れるよう修正しています。

が、この対応によりActive Recordのテストがコケるようになってしまった為後ほどRevertしています。


Revert "Include kwargs definition in the generated method signatures and method calls"

という訳で直前の対応をRevertしています。


These methods take keyword arguments

Active Recordの修正です。

Hashをキーワード引数として受け取れるようdouble splatの指定を追加しています。


Unify save method signatures to take keyword arguments

Active Recordの修正です。

引き続きHashをキーワード引数として受け取れるようdouble splatの指定を追加しています。


Safer example in Rails::Railtie documentation

railties/lib/rails/railtie.rbのdocの修正です。

Rails::Railtieのdoc内のRailsが定義されているかどうかをチェックするのに、defined?(Rails)を使用していたのをdefined?(Rails::Railtie)を使用するよう修正しています。

Railsアプリケーション以外でもRailsが定義されている事がある(e.g. 何らかのgemがRails namespaceを使用している場合)為、より正確にチェック出来るようにする為。


Document the new npm package names in the upgrade guide

rails guideのUpgrading Ruby on Railsの修正です。

npm packages名が6.0で変更になった旨説明している、All npm packages have been moved to the @rails scopeの項を追加しています。