なるようになるブログ

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

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

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

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

actionview/CHANGELOG.md

activestorage/CHANGELOG.md


Merge pull request #42051 from seanpdoyle/form-empty-action

Action Viewの修正です。

formタグを生成するメソッド(form_withform_forform_tagbutton_to)で、action attribute無しのformタグを生成出来るよう修正しています。form_xx系のメソッドはurl: falseaction: falseを指定すれば、button_toは引数にfalseを指定すればaction attributeが生成されないようになります。

<%= form_with url: false do |form| %>
  <%= form.text_field :title %>
<% end %>

=>

<form method="post" data-remote="true">
  <input type="text" name="title">
</form>

なお、action attributeが無いとブラウザは現在のページに対する操作とみなすようになっており、下記のような要素の並び替えようのformを生成するのに使うことを想定している、との事です。

<form method="get">
  <button name="sort" value="desc">Most to least</button>
  <button name="sort" value="asc">Least to most</button>
</form>

Merge pull request #43417 from seanpdoyle/button-to-authenticity-token

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

button_toメソッドで生成するformでauthenticity tokenを含めるよう修正しています。

button_to "Create", Post.new, authenticity_token: true
# => <form class="button_to" method="post" action="/posts"><button type="submit">Create</button><input type="hidden" name="form_token" value="abc123..." autocomplete="off" /></form>

button_to "Create", Post.new, authenticity_token: "secret"
# => <form class="button_to" method="post" action="/posts"><button type="submit">Create</button><input type="hidden" name="form_token" value="secret" autocomplete="off" /></form>

Merge pull request #38957 from DmitryTsepelev/store-per-attachment-direct-upload

Active Storage、Action Viewの修正です。

Active Storageのdirect upload処理で、upload先を引数で指定出来るよう対応しています。


Fix broken rdoc for form_with [ci skip]

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

form_withメソッドのdoc内でフォーマットが壊れてしまっていたのを修正しています。


Add missing # [ci skip]

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

form_withメソッドのdoc内でコメント部分に#が不足していたのを修正しています。


Call yarn directly (#43641)

railties/lib/rails/tasks/yarn.rakeの修正です。

yarnを実行するのにbinstubを使用していたのをyarnコマンドを直接実行するよう修正しています。Rais 7からyarnのbinstubは生成されなくなった為。合わせて、assets:precompile task実行時のyarn:install task実行処理も削除しています。


Improve compatibility with date versions 3.2.1, 3.1.2, 3.0.2 and 2.0.1

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

ActiveSupport::TimeZone#iso8601メソッドで、メソッドの先頭で引数がnilかどうかをチェックするよう修正しています。元々はDate._iso8601nilを指定してもエラーにならなかったのですが、dateの3.2.1からDate._iso8601nilを指定するとTypeErrorが発生するようになってしまったので、Date._iso8601を呼び出すより前に引数チェックをするようにしています。

参考: Date._iso8601 regression following the 3.2.1 security fix


Set the execution context from AC::Metal rather than AbstractController

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

execution contextの指定をAbstractControllerで行っていたのを、ActionController::Metalで行うよう修正しています。AbstractControllerだと、想定していなかったmailerの処理でもcontextが設定されてしまう為。