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

Rails 7.1.0 Action Cable CHANGELOG(翻訳)

概要

MITライセンスに基づいて翻訳・公開いたします。

参考: Action Cable の概要 - Railsガイド

rc1以後の更新はありません。

🔗 Action Cable CHANGELOG(v7.1.0.rc1)

🔗 Delegate StubConnection#pubsub and StubConnection#config to ActionCable.server by julianfssen · Pull Request #48706 · rails/rails

ActionCable.serverシングルトンを参照する@serverインスタンス変数をActionCable::Channel::ConnectionStubに追加。

これにより、pubsubメソッドとconfigのメソッドの呼び出しをサーバーに委譲できるようになる。これにより、pubsubstop_stream_forなど)を呼び出すチャネルロジックのテスト時に発生するNoMethodErrorエラーが修正される。

Julian Foo

同Changelogより

参考: Rails API ActionCable::Channel::ConnectionStub

🔗 Add health check on standalone Action Cable by JoeDupuis · Pull Request #48222 · rails/rails

指定のヘルスチェックRackアプリを指定のパスにマウントするhealth_check_pathhealth_check_application の設定を追加。
Action Cableをスタンドアロンでマウントするときに有用。

Joé Dupuis
同CHANGELOGより

参考: 週刊Railsウォッチ20230621: Action Cableに単独のヘルスチェックが追加された

🔗 Introduce capture_emails and capture_broadcasts by ghiculescu · Pull Request #48798 · rails/rails

capture_broadcastsテストヘルパーを導入。

ブロック内の全メッセージブロードキャストを返す。

messages = capture_broadcasts("test") do
  ActionCable.server.broadcast "test", { message: "one" }
  ActionCable.server.broadcast "test", { message: "two" }
end
assert_equal 2, messages.length
assert_equal({ "message" => "one" }, messages.first)
assert_equal({ "message" => "two" }, messages.last)

Alex Ghiculescu
同CHANGELOGより

参考: 週刊Railsウォッチ20230809: 副作用のないcapture_emailsとcapture_broadcastsテストヘルパーを追加

🔗 feat: improve assert_broadcast_on error message by StephaneRob · Pull Request #47204 · rails/rails

assert_broadcast_onを使っているときのエラーメッセージにブロードキャストメッセージを表示するようになった。

Stéphane Robino
同CHANGELOGより

参考: Rails API assert_broadcast_on -- ActionCable::TestHelper

🔗 Allows passing sub protocols with ActionCable by zedtux · Pull Request #41415 · rails/rails

Action Cableクライアントで、サーバーに任意のデータを渡すサブプロトコルをサポートするようになった。

const consumer = ActionCable.createConsumer()

consumer.addSubProtocol('custom-protocol')

consumer.connect()

以下も参照。

Guillaume Hain

同CHANGELOGより

🔗 Restore Action Cable Redis pub/sub listener on connection failure by palkan · Pull Request #46562 · rails/rails

Redisのコネクションが喪失したときにRedisのpub/subアダプタが自動的に再接続されるようになった。

Vladimir Dementyev

同CHANGELOGより

参考: この修正はRails 7.0.5でリリース済みです

🔗 Add ability to handle reconnects with the connected() callback by mansakondo · Pull Request #45738 · rails/rails

connected()コールバックに、再接続からの接続を区別するための{reconnected}パラメーターを渡せるようになった。

import consumer from "./consumer"

consumer.subscriptions.create("ExampleChannel", {
  connected({reconnected}) {
    if (reconnected) {
      ...
    } else {
      ...
    }
  }
})

Mansa Keïta

同CHANGELOGより

参考: 週刊Railsウォッチ20221011: Action Cableのconnected()コールバックに再接続の制御を追加

🔗 Redis 5.0.0 compatibility by casperisfine · Pull Request #45856 · rails/rails

Redisアダプタがredis-rb 5.0互換になった。

redis-rb 3.xとの互換性は廃止された。

Jean Boussier
同CHANGELOGより

redis/redis-rb - GitHub

参考: この修正はRails 7.0.4でリリース済みです

🔗 Anchor the Action Cable server's route by ghiculescu · Pull Request #45490 · rails/rails

Action Cableサーバーがanchor: trueでマウントされるようになった。

これにより、/cableで始まるルーティングもAction Cableと衝突しなくなる。

Alex Ghiculescu

同CHANGELOGより

参考: この修正はRails 7.0.4でリリース済みです
参考: 週刊Railsウォッチ20220704: Action Cableサーバーをanchor: trueでマウントするようになった

🔗 Send disconnect message during remote disconnect by palkan · Pull Request #45072 · rails/rails

再接続戦略が指定されている場合に、ActionCable.server.remote_connections.where(...).disconnectがコネクション切断前にdisconnectメッセージを送信するようになった(デフォルトはtrue)。

Vladimir Dementyev

同CHANGELOGより

🔗 Add Action Cable command callbacks at the connection level by palkan · Pull Request #44696 · rails/rails

ActionCable::Connection::Base.にコマンドコールバックが追加された。

クライアントが受信した任意のコマンドの実行前、実行後、または実行前後に呼び出されるbefore_commandafter_commandaround_commandを定義可能になる。

Vladimir Dementyev

同CHANGELOGより

Rails 7.1: Action Cableコマンドにコネクションレベルのコールバックが追加(翻訳)


以前の変更については7-0-stableのCHANGELOGを参照。

関連記事

Rails 7.1に入る主要な機能まとめ(1)update_attribute!、CTEサポートほか(翻訳)

Rails 7.1に入る主要な機能まとめ(2)error_highlight対応、routes --grepほか(翻訳)

Rails 7.1に入る主要な機能まとめ(3)Docker関連ファイル導入ほか(翻訳)


CONTACT

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