なるようになるブログ

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

rails commit log流し読み(2019/02/12)

2019/02/12分のコミットです。

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

railties/CHANGELOG.md

activesupport/CHANGELOG.md


Merge pull request #35196 from gmcgibbon/clarify_collection_proxy_docs

activerecord/lib/active_record/associations/association.rbactiverecord/lib/active_record/associations/collection_proxy.rbのdocの修正です。

ActiveRecord::Associations::CollectionProxyのdocでActiveRecord::Associations::Associationについて説明していたので該当の説明をActiveRecord::Associations::Associationに修正、及び、諸々言い回しを修正しています。


Optimized namespaces_to_paths method.

railties/lib/rails/command/behavior.rbの修正です。

Behavior#namespaces_to_pathsメソッド内のpath生成処理で不要なオブジェクトを生成しないよう修正しています。


Merge pull request #35198 from paracycle/uk-change-config-for-behaviour

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

Use ActiveSupport::InheritableOptions and deep_symbolize_keys in config_for[Realties] config_for as ActiveSupport::OrderedOptionsRails::Application.config_forメソッドで読み込んだ値をSymbol化 + ActiveSupport::OrderedOptionsで保持するようになったのですが、その影響で、元々出来ていたnested hashesに対してkeyをStringで指定してのアクセスができないようになっていました。

流石にこれはbreaking changeになってしまう為、keyがStringでもアクセスが出来るよう対応 + keyがStringの場合deprecatedメッセージを出すよう修正しています。


Avoid implicit delegation in the migration compatibility

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

各種メソッドを呼び出す際に明示的にreceiverを指定するよう修正しています。

元々は暗黙的なdelegationに依存していたのですが、migration classでの暗黙的なdelegationはlogに記録されてしまう(migration実行時に呼び出したメソッドが表示されてしまう)為、明示的にreceiverを指定するよう修正しています。


Document queue_as block arguments and their use

activejob/lib/active_job/queue_name.rbのdocの修正です。

queue_asメソッドのdocにblockを指定出来る旨説明、及び、指定した場合のexampleを追加しています。


use a proxy matcher for AS::N fanout

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

subscribersにregexpまたは他のpattern-matching objectを指定していた場合に、ActiveSupport::Notifications.unsubscribeに指定した以外のpatternもunsubscribeされてしまう(subscribersのregexpに一致するsubscribersが全てunsubscribeされてしまう)、というバグがあったのを修正しています。

# before
subscriber = ActiveSupport::Notifications.subscribe(/render/) { }
ActiveSupport::Notifications.unsubscribe('render_template.action_view')
subscriber.matches?('render_template.action_view') # => true
subscriber.matches?('render_partial.action_view')  # => true


# after
subscriber = ActiveSupport::Notifications.subscribe(/render/) { }
ActiveSupport::Notifications.unsubscribe('render_template.action_view')
subscriber.matches?('render_template.action_view') # => false
subscriber.matches?('render_partial.action_view')  # => true

Add missing packages (#35227)

railties/test/isolation/assets/package.jsonの修正です。

railtiesのテストで使用するnpm packageの指定が不足していたのを修正しています。