なるようになるブログ

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

rails commit log流し読み(2023/09/27)

2023/09/27分のコミットです。

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

activerecord/CHANGELOG.md

activestorage/CHANGELOG.md

actionpack/CHANGELOG.md

activejob/CHANGELOG.md

actionview/CHANGELOG.md


fix ActionText::Attachable#as_json to allow options

actiontext/lib/action_text/attachable.rbの修正です。

modelでActionText::Attachableをincludeしている場合、as_jsonメソッドにonlyオプションを指定していても必ず出力内容にattachable_sgidが含まれていたのを、オプションで指定されたとおりに出力するよう修正しています。


Remove connection created in the test

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

テストで作成したconnectionをテストの後処理で削除するよう修正しています。


Fix duplicate escaping of quotes for check constraint expressions in MySQL schema

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

MySQLでcheck constraint expressionをschemaファイルに出力する際に、quoteに対するescape処理が正しく行われてなかったのを修正しています。


Merge pull request #49370 from ghiculescu/upgrade-guide-rails-test

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

bin/rails testtest:prepare taskを実行するようになった対応についての説明を追加しています。


Removes unneccessary stub

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

transaction関連のテストから、不要なstub処理を削除しています。


[skip ci] ActiveRecord notable changes added to 7.1 release note

rails guideのRuby on Rails 7.1 Release Notesの修正です。

Active RecordのNotable changesを更新しています。


Add a CHANGELOG entry for #49383

activerecord/CHANGELOG.mdの修正です。

unique constraint関係のAPI名を変更した、Rename back unique keys to unique constraintsの対応についてCHANGELOGにエントリーを追加しています。


Fix rewhere's link for API doc in the guide

rails guideのActive Record Query Interfaceの修正です。

rewhereメソッドのAPI docのリンクが正しく設定されなくなってしまっていたのを修正しています。


Use monospace font for code snippets and options [ci-skip]

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

code snippetとoptionがmonospace fontで表示されるようフォーマットの修正を行っています。


Add expires_at option to ActiveStorage::Blob#signed_id

activestorage/app/models/active_storage/blob.rbactivestorage/config/routes.rbの修正です。

ActiveStorage::Blob#signed_idメソッド及びURL helperメソッドに期限切れになる日時を指定するためのexpires_atオプションを指定出来るよう修正しています。

rails_blob_path(user.avatar, disposition: "attachment", expires_at: 30.minutes.from_now)
<%= image_tag rails_blob_path(user.avatar.variant(resize: "100x100"), expires_at: 30.minutes.from_now) %>

Support ActionController::Parameters#deep_merge

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

ActionController::Parametersに、再帰的にmerge処理をするための#deep_merge及び#deep_merge!メソッドを追加しています。


Revert typography change in user facing errors

エラーメッセージ内のAPOSTROPHE (U+0027)をRIGHT SINGLE QUOTATION MARK(U+2019)を使用するよう修正した、Improve typography of user facing validation messagesをRevertしています。大量の既存のアプリケーションやライブラリの更新が必要になってしまい、大変困る、というようなネガティブなフィードバックが大変きたためRevertとなりました。


Fix some more quotes

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

先のRevert処理の影響で失敗するようになってしまったテストを修正しています。


Set, serialize, and deserialize Active Job scheduled_at as Time; deserialize enqueued_at as Time; deprecate setting scheduled_at= with numeric/epoch

Active Jobの修正です。

enqueued_atをserialize/deserialize処理でTimeオブジェクトとして扱うよう修正しています。good_jobなどのbackendのgemで、enqueued_atの値をそのままscheduled jobやretryなどに使用出来るようにするため、との事です。元々サポートしていたnumeric/epochの値のサポートはdeprecatedになっています。


fix typo in new_framework_defaults_7_1.rb.tt

railties/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_1.rb.ttのdocの修正です。

Rails.application.config.add_autoload_paths_to_load_pathについてのコメント内のタイポを修正しています。


Introduce ActionView::TestCase.register_parser

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

ActionView::TestCaseでviewをrenderする際に実行するdecode処理を定義するためのActionView::TestCase.register_parserメソッドを追加しています。デフォルトではhtml、及び、json用のparserが定義されています。合わせて、renderされたcontentを取得するためのrenderedメソッドも追加されています。

test "renders JSON" do
  article = Article.create!(title: "Hello, world")

  render formats: :json, partial: "articles/article", locals: { article: article }

  assert_pattern { rendered.json => { title: "Hello, world" } }
end
register_parser :rss, -> rendered { RSS::Parser.parse(rendered) }

test "renders RSS" do
  article = Article.create!(title: "Hello, world")

  render formats: :rss, partial: article

  assert_equal "Hello, world", rendered.rss.items.last.title
end

Also rescue TZInfo::ZoneinfoDirectoryNotFound when loading time zone data

activesupport/lib/active_support/railtie.rb`の修正です、

time zone dataをload時に、TZInfo::DataSourceNotFoundがraiseされた場合にtzinfo-data gemをインストールする必要がある旨表示していたのを、TZInfo::ZoneinfoDirectoryNotFoundの場合も同様にメッセージを表示するよう修正しています。こちらも必要なデータが無い場合に発声する可能性があるため。


Merge pull request #49083 from 1st8/actionmailer-log-subscriber-log-errors

actionmailer/lib/action_mailer/log_subscriber.rbの修正です。

メールの送信に失敗した場合もログにDelivered mail...と出力されていたのを、Failed delivery of mail...と送信が失敗した事がわかるようメッセージを変更しています。


[skip ci] Docs: Fix typo in author name Paul Coelho -> Paulo Coelho

rails guideのRuby on Rails 7.1 Release Notes、及び、activerecord/CHANGELOG.mdの修正です。

column-tuple syntaxを使用した場合の実行結果でタイポがあったのを修正しています。


Preparing for 7.1.0.rc1 release

各gemのバージョンを7.1.0.rc1に更新しています。


Don't add CHANGELOG offenses to "no changes" line

tools/rail_inspector/lib/rail_inspector/changelog.rbの修正です。

CHANGELOGNo changes.と記載されている場合に記載内容に誤りがある旨指摘されるようになっていたのを、No changes.を許容するよう修正しています。


Development of Rails 7.2 starts now

各gemのバージョンを7.2.0.alphaに更新しています。


Fix the problem of database connections leaking between tests

activerecord/test/cases/connection_adapters/connection_handlers_sharding_db_test.rbactiverecord/test/cases/test_case.rbの修正です。

特定のテストでのみ使用する事を想定しているconnectionが、他のテストで使用されないよう修正しています。


Enable Lint/RedundantSafeNavigation rubocop cop

Lint/RedundantSafeNavigation copを追加、及び、各ファイルにcopを適応しています。


HTML tag validation added for tags

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

tag及びcontent_tagメソッドでHTMLタグを生成する際に、生成するタグがHTMLの仕様として正しいかチェックするよう修正しています。

content_tag("12p")
# => ArgumentError: Invalid HTML5 tag name: 12p

content_tag("")
# => ArgumentError: Invalid HTML5 tag name: ""

tag("div/")
# => ArgumentError: Invalid HTML5 tag name: div/

tag("image file")
# ArgumentError: Invalid HTML5 tag name: "image file"

[ci skip] do not use backticks in docs

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

docのフォーマットを修正しています。


Add async_ids to 7_1_release_notes [ci skip]

rails guideのRuby on Rails 7.1 Release Notesの修正です。

Active Record API for general async queriesの一覧にasync_idsを追加しています。