Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 6.1.5と5.2.7がリリースされました

Ruby on Rails 6.1.5と5.2.7がリリースされました。

6.1.5は6.1.x系の最後のバグ修正リリースと銘打たれており、多くの修正が入っています。

5.2.7の修正は、Active SupportでのRuby 2.2再サポートActive Storageの修正、合わせて2件のみです。

なお、7-0-stableは現時点でリリース準備はされていないようです↓。

英語版Changelogをまとめて見るにはGItHubのリリースタグ↓が便利です。

詳しくは以下のコミットリストをご覧ください。

🔗 更新の概要(6.1.5)

🔗 Changelogに更新が記載されている機能

以下の機能はリリースノートの記載順です。

本記事では、6.1.5リリースタグに掲載されているChangelogに対応するプルリクやコミットへのリンクを取り急ぎ貼りました。

🔗 Active Support

ActiveSupport::Duration.buildで負の値をサポートするよう修正。
ActiveSupport::Durationのパーツをコレクションするアルゴリズムが値の符号を無視していたため、無効な値が蓄積されていた。これは、パーツが依存するActiveSupport::Duration#sumには影響するが、値に依存するActiveSupport::Duration#eql?には影響しない。
Caleb Buxton, Braden Staudacher

Time#changeおよびこれを呼び出すメソッド(Time#advanceなど)が、呼び出し側がタイムゾーン引数で初期化されていた場合に指定のタイムゾーン付きのTimeを返すように修正。
Alex Ghiculescu

タグ付きロガーで、extendされるLoggerメソッドのdupcloneに変更。
Orhan Toy

ActiveSupport::Testing::Assertionsincludeするとassert_changesが動かなくなる問題を修正。
Pedro Medeiros

🔗 Active Model

パスワードがnilに設定されている場合にセキュアパスワードのキャッシュをクリアするようになった。
Markus Doits

# 修正前
user.password = 'something'
user.password = nil

user.password # => 'something'
# 修正後
user.password = 'something'
user.password = nil

user.password # => nil

ActiveModel::Type::Registry#lookupActiveModel::Type.lookupの委譲を修正。
位置引数末尾に {}を渡すとキーワード引数と誤認されることがあった。
Benoit Daloze

ActiveModel::Dirtyオブジェクトでchanges_applied後のto_jsonを修正。
Ryuta Kamizono

🔗 Active Record

Ruby 2.6でのActiveRecord::ConnectionAdapters::SchemaCache#deep_deduplicateを修正。

String#@-の実装はRuby 2.6と2.7でわずかに異なる。
Ruby 2.6では、String#@-のレシーバーが特定の状況で改変される。
これは後にバグとして認識され(#15926)、Ruby 2.7で修正された。
このコミットによる変更前は、Ruby 2.6でActiveRecord::ConnectionAdapters::SchemaCache#deep_deduplicateが内部でString#@-を呼び出し、入力文字列が改変される(ダーティかつfreezeしていない文字列が、ダーティかつfreezeされた文字列に変更される)。
Eric O'Hanlon

マイグレーションのバージョンが6.0の場合にSQLiteのreferences/belongs_toカラムをintegerとして作成するようマイグレーションの互換性を修正。
SQLiteアダプタで、バージョン6.0のマイグレーションのreference/belongs_toカラムがintegerではなくbigintとして作成されていた。
Marcelo Lauxen

dbconsoleを3-tierコンフィグ向けに修正。
Eileen M. Uchitelle

エンコーディングが不正なSQLクエリの扱いを改善。

Post.create(name: "broken \xC8 UTF-8")

上のコードはすべてのアダプタで、書き込みクエリの検出を担当するコードが制御不能な形で失敗する。
このクエリが適切にデータベースコネクションに渡されるようになったが、成功と失敗のどちらも正しく行われる(データベースが扱えるかどうかは別)。
Jean Boussier

永続化したインメモリレコードをmerge_target_listsで無視するように修正。
Kevin Sjöberg

has_many throughリレーションのプリロードで追加条件が無視されるリグレッションバグを修正。
Alexander Pauly

config.active_record.record_timestamps = falseActiveRecord::InternalMetadataが壊れないよう修正。
モデルは常にタイムスタンプカラムを作成するのでタイムスタンプの設定が必要。そうしないと多くのDB管理タスクが壊れる。
Jean Boussier

inverse_ofによるActive Recordオブジェクトの重複を修正。
Justin Carvalho

has_many関連付けでsave後のオブジェクト重複を修正。
Alex Ghiculescu

CollectionAssocation#buildのパフォーマンスリグレッションを修正。
Alex Ghiculescu

MariaDBでtextカラムのデフォルト値に余分な引用符が含まれる問題を修正。
fatkodima

🔗 Action View

preload_link_tagが、JPGやSVGなどの画像MIMEタイプを持つファイルの属性として適切に挿入するよう修正。
Nate Berkopec

生成されるすべてのhiddenフィールドにautocomplete="off"を追加するよう修正。
Ryan Baumann

URL末尾にスラッシュがある場合のcurrent_page?の挙動を修正。
指定のURL末尾にスラッシュがあり、絶対URLまたはクエリパラメータもある場合のcurrent_page?ヘルパーの挙動を修正、
Jonathan Hefner

🔗 Action Pack

content_security_policyが返す無効なディレクティブを修正。
配列を返すlambda呼び出しの結果がディレクティブになる場合、selfunsafe-evalなどのディレクティブが一重引用符で囲まれていない。

content_security_policy do |policy|
  policy.frame_ancestors lambda { [:self, "https://example.com"] }
end

この修正で、上で生成されるポリシーが有効なものになる。
Edouard Chin

config.consider_all_requests_local = trueの場合にのみHostAuthorizationミドルウェアがデバッグ情報をレンダリングするよう修正。
また、ブロックされたホストの情報は常にerrorレベルでログ出力される。
Nikita Vyrko

converted_arraysconverted_arrays.dupに修正。
Aaron Patterson

テストでパスが等しい場合に非推奨メッセージを表示しないよう修正。
Anton Rieder

無効なHTTPフォーマットでActionController::Instrumentationがクラッシュする問題を修正。
Alex Ghiculescu

RackTestで動くSystemTestCaseにフォールバックホストを追加。
Petrik de Heus

ホスト名で利用してよい文字をエラーメッセージに表示。
Alex Ghiculescu

🔗 Action Cable

Action Cableクライアントがチャネルのサブスクリプションに失敗しないよう修正。
クライアントは、サーバーがサブスクリプションを確認するかチャネルを破棄するまで、保留中のサブスクリプションセットを維持する。このプルリクは、unsubscribe送信直後に(同じチャネルidで)subscribeを送信するとAction Cableサーバーで順番どおりに処理されず、subscribeコマンドが無視されてしまう競合状態を修正する。
Daniel Spinosa

ブロードキャストのログメッセージを300文字までに切り詰めるよう修正。
J Smith

🔗 Active Storage

関連付けが定義されなくなった後で添付ファイルを削除可能にするよう修正。
Don Sisco

🔗 Action Mailbox

受信メールのconductor向けに、許可済みパラメータリストに添付ファイルを追加。
添付ファイルがある受信メールをconductorでテストしたときに、許可されていないパラメータという警告がデフォルトの設定で表示されないようにし、以下が設定されているアプリケーションでエラーにならないようにする。

config.action_controller.action_on_unpermitted_parameters = :raise

David Jones, Dana Henke

🔗 Action Text

Action Textの余分なtrixコンテンツラッパーを修正。
Alexandre Ruban

🔗 Railties

zeitwerkモードでonceオートローダーを最初にセットアップしてからmainオートローダをセットアップするようにした。名前空間が共有される場合はこの順序の方がよい。
Xavier Noria

credential編集時にスペースを含むパス(Windowsユーザー名)を扱えるよう修正。
Alex Ghiculescu

secret読み込み時にPsych 4をサポート。
Nat Morcos

🔗 Changelogに更新の記載がない機能

以下は6.1.5のChangelogに更新の記載がありません。


TechRachoではRubyやRailsの最新情報などの記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ)

関連記事

Railsセキュリティ修正がリリースされました(7.0.2.3、6.1.4.7、6.0.4.7、5.2.6.3)

Rails 7.0.2がリリースされました


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。