なるようになるブログ

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

rails commit log流し読み(2021/12/15)

2021/12/15分のコミットです。

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

actionview/CHANGELOG.md

activestorage/CHANGELOG.md


Add missing word

rails guideのWorking with JavaScript in Railsの修正です。

Unobtrusive JavaScriptの項のグラマーの修正を行っています。


Raise error when callback's only/unless symbols aren't methods

Action Pack、railtiesの修正です。

controllerのbefore_actionのonly/unlessに指定するSymbolが、存在しないメソッドの場合にexceptionをraiseするよう修正しています。メソッド名をタイポしていたような場合に、気付けるようにする為。


Fix invalid forwarded host vulnerability

actionpack/lib/action_dispatch/middleware/host_authorization.rbの修正です。

"X-Forwarded-Host" headersに特定のフォーマットに加工されたホストが指定された場合に、オープンリダイレクト出来てしまう脆弱性があったのを修正しています。config.hosts.からはじまるホスト名を指定している場合に影響を受ける可能性があります。

参考: CVE-2021-44528


Add support for YubiKey OTP codes during release

tasks/release.rbの修正です。

ライブラリのリリースでYubiKeyのOTP codesを使用しての認証を出来るよう修正しています。ykmanを使って処理を行っています。

参考: Publishing Gems With Your YubiKey


Allow localhost with a port by default in development

actionpack/lib/action_dispatch/middleware/host_authorization.rbの修正です。

先の脆弱性の対応の影響で、development envでlocalhostを任意のポートを指定して起動した場合に、host authorizationにリクエストがブロックされてしまうリグレッションが発生していたのを修正しています。


Edits link to edge guide for 7.0 final

railties/lib/rails/generators/rails/app/templates/Gemfile.ttの修正です。

edgeguides.rubyonrails.org へのリンクを guides.rubyonrails.orgに修正しています。


FormBuilder#field_id: prepend namespace: option

Action Viewの修正です。

FormBuilder#field_idメソッドでidを組み立てる際に、namespaceオプションが無視されてしまっていたのを、namespaceオプションに指定された値を使用して組み立てるよう修正しています。


Generated Gemfile will automatically pickup the latest version on first bundle (#43866)

railties/lib/rails/generators/app_base.rbrailties/lib/rails/generators/rails/app/templates/Gemfile.ttの修正です。

rails newで生成されるGemfileで定義するgemから、バージョンの指定を削除しています。bundlerが自動で最新バージョンを取得してくれるので、バージョンの指定は必要無いだろう、という事で。


Merge pull request #43511 from seanpdoyle/active-storage-overwrite-many-with-emptyish

Action View、Active Storageの修正です。

Action Viewで、ActionView::Helper::FormBuilder#file_fieldmultiple: trueを指定、かつconfig(config.active_storage.multiple_file_field_include_hidden)がtrueの場合に、file_fieldで空のcollectionをhiddenフィールドとして生成するよう修正しています。

合わせて、Active Storageで、has_many_attachedに空の値を指定した場合、空の値が設定されたとみなす(ファイルを削除する)よう修正しています。

これにより、file filedで空の値を送信するだけで、has_many_attachedに登録済みのファイルの削除が出来るようになっています。


Remove CHANGELOG entry that is already in 7-0-stable

actionview/CHANGELOG.mdactivestorage/CHANGELOG.mdの修正です。

CHANGELOGから、7.0のブランチにバックポートされた対応のエントリーを削除しています。


Revert "Revert "Merge pull request #43816 from jpawlyn/fix-one-and-many-on-relation""

load済みのassociationに対して削除処理を実行した場合にActiveRecord::Relation#one?の結果が正しく取得出来ないバグがあったのを修正した、Remove memoization for limited_countを再度コミットしています。CIが壊れた 為一度Revertされたのですが、そもそもメモ化出来ない値をメモ化してしまっていたのが原因で、修正内容自体は正しかった為。


Merge pull request #39663 from jonathanhefner/rails-new-prerelease

railtiesの修正です。

rails newにprerelease flag(e.g. --edge)を指した場合に、アプリケーションの生成が指定したprereleaseのバージョンで行われなかった(インストール済みのバージョンが使用されていた)のを、アプリケーションの生成がprereleaseのバージョンで行われるよう修正しています。


Merge pull request #43855 from nvasilevski/button-to-changes-to-release-notes

rails guideのRuby on Rails 7.0 Release NotesUpgrading Ruby on Railsの修正です。

ActionView::Helpers::UrlHelper#button_toに保存済みのActive Recordのobjectを指定した場合に、使用されるhttp methodがRails 7.0で変わった事についての説明を追加しています。


Merge pull request #43846 from fig/fix-scaffold-self-referential-link

railties/lib/rails/generators/erb/scaffold/templates/index.html.erb.ttrailties/lib/rails/generators/erb/scaffold/templates/partial.html.erb.ttの修正です。

scaffoldで生成されるテンプレートで、showページへのリンクがshowページ内に含まれてしまっていたのを、indexページに移動しています。


Merge PR #43611

railtiesの修正です。

controller generatorにnamespace + model nameを指定した場合に、namespaceが無視されて値の生成がされてしまうバグがあったのを修正しています。


Merge pull request #43850 from hachi8833/fix_favicon_link_tag

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

favicon_link_tagメソッドが生成するlinkタグのrel attributeから、shortcutを削除しています。shortcutは数年前にdeprecatedになっており、現在指定するのは推奨されていない(無視される)為。

参考: Link types - HTML: HyperText Markup Language | MDN


Merge pull request #43836 from donv/patch-1

actionpack/lib/action_dispatch/system_testing/test_helpers/screenshot_helper.rbの修正です。

System Testでテスト失敗時のスクリーンショットを取得する際に、テスト用のサーバが起動していない場合は、処理を行わないよう修正しています。


Merge pull request #43817 from etiennebarrie/deprecate-non-url-safe-csrf-tokens

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

CSRFトークンを生成するのにURL-safeな値を使用するかどうかを指定する為のconfig(config.action_controller.urlsafe_csrf_tokens)をdeprecateにしています。今後は、必ずURL-safeな値が指定されるようになります。


Fix scaffold test

railties/test/generators/scaffold_controller_generator_test.rbの修正です。

Merge PR #43611の影響でscaffoldのテストがfailしていたのを修正しています。


Fix ruby warnings

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

Rubyのwarning(instance variable xxx not initialized)が出ていたのを修正しています。


Add back CHANGELOG entry for authenticate_by

activerecord/CHANGELOG.mdの修正です。

Add authenticate_by when using has_secure_passwordで追加されたauthenticate_byメソッドについてのエントリーを戻しています。Rails 7.0にはバックポートされておらず、次バージョンの新機能の為。