なるようになるブログ

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

rails commit log流し読み(2019/11/11)

2019/11/11分のコミットです。

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

activerecord/CHANGELOG.md

activesupport/CHANGELOG.md


Fix inconsistent capitalization of Article in getting started

rails guideのGetting Started with Railsの修正です。

exampleコード内のArticleが大文字小文字混在していたのを、先頭大文字のArticleで統一するよう修正しています。


Merge pull request #37626 from pawurb/implicit_ordering_primary_key

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

implicit_order_columnが指定されている、かつ、implicit_order_columnがprimary keyと異なる場合に、implicit_order_columnに加えてprimary keyでsortもするよう修正しています。

implicit_order_columnに値が重複するようなカラム(e.g. created_at)を指定した場合に、records取得時の結果が毎回同じになるようにする為。


Merge pull request #37621 from jonathanhefner/docs-update-form-examples

rails guideの修正です。

form_for / form_tagを使っている箇所をform_withを使うよう修正、及び、フォームブロックで使用する変数名をf -> formに修正しています。


Accept block in travel_back time helper

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

travel_backにblockを指定出来るよう修正しています。blockを指定した場合、blockの中ではTimeの戻り値はstubされていない値が返るようになっています。


Improve docs of the load_defaults method [ci skip]

rails guideのConfiguring Rails Applications、及び、railties/lib/rails/application/configuration.rbのdocの修正です。

load_defaultsメソッドのdocにguideのload_defaultsについて説明している箇所(https://guides.rubyonrails.org/configuring.html#results-of-config-load-defaults )へのリンクを追加、及び、rails guideのConfiguring Rails Applicationsload_defaultsについて説明している箇所で、説明の順番をRailsのバージョンが新しい順に説明するよう修正しています。


Merge pull request #37520 from shioyama/class_method_defined_within_extra_argument

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

dangerous_class_method?メソッドのチェック処理を別メソッド(class_method_defined_within?)で行っていたのを、メソッド内で直接行うようにして、class_method_defined_within?メソッドは削除するようリファクタリングしています。

rails commit log流し読み(2019/11/10)

2019/11/10分のコミットです。

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


Merge pull request #37658 from rails/fix-collection-association-callback

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

associationのcallbackでthrow(:abort)を行った場合に、callbackが停止せずにUncaughtThrowErrorそのままraiseされてしまうバグがあったのを修正していmさう。


Remove unused :table_name in valid_options for association builder

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

association builderのvalid_optionsのリストに使用していないオプションが含まれていたのを削除しています。


:through, :source, and :source_type are valid for through association

activerecord/lib/active_record/associations/builder/has_and_belongs_to_many.rbactiverecord/lib/active_record/associations/builder/has_many.rbの修正です。

has_many associationのvalid_optionsのリストに:through:source:source_typeオプションを追加しています。


Both singular associations (has_one, belongs_to) supports :touch option in Rails 6.0

activerecord/lib/active_record/associations/builder/belongs_to.rbactiverecord/lib/active_record/associations/builder/has_one.rbactiverecord/lib/active_record/associations/builder/singular_association.rbの修正です。

singular associationsのvalid_optionsのリストに:touchオプションを追加しています。


Extract common valid options for association builder

activerecord/lib/active_record/associations/builder/association.rbactiverecord/lib/active_record/associations/builder/has_many.rbactiverecord/lib/active_record/associations/builder/singular_association.rbの修正です。

singular associations / has_many associationで共通のオプションをassociation builderで指定するよう修正しています。


:polymorphic, :as, and :foreign_type are valid for polymorphic association

Active Recordの修正です。

polymorphic associationのvalid_optionsのリストに:polymorphic:as:foreign_typeオプションを追加しています。

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

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

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

activejob/CHANGELOG.md


Add an option to disable logging for jobs with sensitive arguments

activejob/lib/active_job/log_subscriber.rbactivejob/lib/active_job/logging.rbの修正です。

Active Jobのログにargumentsを含むかどうかをconfigで指定出来るよう修正しています。

jobのargumentsにパスワードやトークン等のセンシティブな情報を含む場合に、それらをログに出したくない場合に使用するための機能です。argumentsを含みたくない場合はjob classでlog_argumentsfalseを指定すればOKです。


Defer Active Storage service configuration until use

Active Storageの修正です。

service configurationの設定処理をアプリケーションの初期化時に行っていたのを、実際に使用する際に行うよう修正しています。

初期化時に行うと、初期化の時点でconfigファイルのパース処理が実行されてしまうのですが、configファイルでacces keyのような機密情報をcredentialsやENV経由で指定していた場合に、テスト環境ではそれらの値が取得できずエラーになってしまう、という問題があった為。


Merge pull request #37590 from jhawthorn/deprecation_threadsafe

activesupport/lib/active_support/deprecation.rbactivesupport/lib/active_support/deprecation/reporting.rbの修正です。

ActiveSupport::Deprecation.silenceがすべてのスレッドに対して影響があったのを、実行しているスレッドでのみdeprecateをsilenceにするよう修正しています。


Controller can be symbols as well

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

routesでcontrollerの指定にSymbolを使用した場合に、NoMethodErrorが発生してしまうバグがあったのを修正しています。


Fix configuring a cache store with ActiveSupport::OrderedOptions

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

cache storeの指定にActiveSupport::OrderedOptionsを使用(e.g. config_forメソッドを使用した場合)に指定した値が正しく使用されないバグがあったのを修正しています。


Fix small typo in activejob changelog

activejob/CHANGELOG.mdの修正です。

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

rails commit log流し読み(2019/11/08)

2019/11/08分のコミットです。

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


Mention public storage in the guides [skip ci]

rails guideのActive Storage Overviewの修正です。

Active Storageが生成するURLをpublicにする方法について説明した、Public accessのセクションを追加しています。


Suppress deprecation warning in generating the guide index.html

guides/rails_guides/generator.rbの修正です。

renderfileオプションに相対パスでファイルを指定している箇所があったのを、templateオプションを使用するよう修正しています。file相対パスでファイルを指定するのはdeprecatedになっている為。


Merge pull request #37644 from ryan-robeson/fix-37543-generator-class-collision

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

scaffole_controllerでcontrollerファイルを生成する際に、collision checkが行われないバグがあったのを修正しています。

rails commit log流し読み(2019/11/07)

2019/11/07分のコミットです。

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


let environments configure load-related paths

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

各load pathを設定するinitializerより先に config/environmentsをロードするinitializerを先に実行するように修正しています。

environment fileでload pathの設定を出来るようにする為。


Add load hook for ActionDispatch::Request

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

ActionDispatch::Request load時使用する為のaction_dispatch_response hookを追加しています。


Document the load hook for ActionDispatch::Response [ci skip]

rails guideのGetting Started with Enginesの修正です。

Available Hooksの項にあるhookの一覧にaction_dispatch_response hookを追加しています。


Fix indentation in configuring.md [ci skip]

rails guideのConfiguring Rails Applicationsの修正です。

config.action_controller.enable_fragment_cache_logging configについて説明している箇所のインデントがずれている箇所があったのを修正しています。


Append missing 's' to #silence_warning call

actionpack/test/controller/live_stream_test.rbの修正です。

silence_warningssilence_warningにタイポしている箇所があったのを修正しています。


Merge pull request #37622 from eileencodes/multi-role-per-class

Active Recordの修正です。

複数のPollConfigを管理する為のPoolManagerクラスを追加しています。

PoolConfigでは、それぞれdb_configconnection_specification_nameschema_cache等を管理出来るようになっており、establish_connectionremove_connection等のDBコネクション関係のメソッドでは、keyを指定する事でどのPoolConfigを使用するかを指定出来るようになています。

shardingをサポートするにはクラス毎に複数のコネクションを扱えるようにする必要があり、その対応の一環。

rails commit log流し読み(2019/11/06)

2019/11/06分のコミットです。

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


Merge pull request #37490 from huacnlee/fix-aws-public-acl

activestorage/lib/active_storage/service/s3_service.rbの修正です。

S3 serviceをpublic modeで使用している場合、ACLpublic-readを指定するよう修正しています。


Address no implicit conversion of Arel::Attributes::Attribute into String

activerecord/lib/arel/visitors/oracle.rbの修正です。

Arel::Visitors::Oracle#order_hacksmatch?メソッドを使っていた箇所を===を使用するよう修正しています。

Use Regext#match? where MatchData is not neededmatch?を使うよう変更されていた箇所だったのですが、引数にString以外の値が来る箇所であり、match?ではチェック出来ない為。


Remove needless require "pp"

各ファイルからppのrequireを削除しています。Ruby 2.5からKernel#ppが自動でロードされるようになり、requireは不要になった為。

rails commit log流し読み(2019/11/05)

2019/11/05分のコミットです。

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

actionpack/CHANGELOG.md


Add :uuid to process_action.action_controller payloads

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

process_action.action_controller notificationのpayloadにuuid(デフォルトだとX-Request-Id headerの値)を含むよう修正しています。が、これは後ほどActionDispatch::Requestインスタンスをまるまるpayloadに含むよう修正しています。


i18n.md: Remove Rails versions from Traco link

rails guideのRails Internationalization (I18n) APIの修正です。

Traco gemについて説明している箇所に、Rails 3と4向けのgemである旨説明が記載されていたのを削除しています。Rails 5以上もサポートしている為。


Merge pull request #37504 from utilum/no_implicit_conversion_of_nil

Regexp#match?に値を渡す場合に値がnilかどうかをチェックするよう修正しています。

Ruby 3でRegexp#match(?)nilを渡すとTypeError`をraiseするよう変更になる予定で、Ruby 2.7からdeprecationメッセージが出るようになった為。

参考: Feature #13083: Regexp#{match,match?} with a nil argument are deprecated and will raise a TypeError in Ruby 3.0 - Ruby master - Ruby Issue Tracking System


No need to break the line

actionview/lib/action_view/layouts.rbの修正です。

if文の後ろにあった不要な改行を削除しています。


Use singular, instance, in deprecation warning.

actionview/lib/action_view/base.rbの修正です。

ActionView::Base#compiled_method_containerメソッドで出力するdeprecateメッセージのグラマーの修正を行っています。


Provide the whole request

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

process_action.action_controller notificationのpayloadにActionDispatch::Requestインスタンスをまるまる含むよう修正しています。