actioncable 7.2.2.2 → 7.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +18 -0
- data/README.md +1 -1
- data/lib/action_cable/channel/base.rb +6 -0
- data/lib/action_cable/channel/streams.rb +2 -0
- data/lib/action_cable/connection/test_case.rb +2 -5
- data/lib/action_cable/gem_version.rb +2 -2
- data/lib/action_cable/subscription_adapter/postgresql.rb +5 -6
- data/lib/action_cable/subscription_adapter/redis.rb +8 -3
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 88ac9e42c67cca041d0460a69d0c15d4ae29a219701f121f04204a70b750c038
|
|
4
|
+
data.tar.gz: 2a6d999d4e3249b3b0bc8ea7434df42de661b18b34242ab2b35c4971d0701baa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 745a91a5943da893641b66f9246657695e3ddbfb8713e1d258612d59f628d5680f86c8e069be0530cad1209d9447b7aecd2833d9ee89eefaf3d2a28084fa4a64
|
|
7
|
+
data.tar.gz: e7948ddcc1ff1a16ec75a80f4e3c3dbed53037eaac8211eb79df326136f65b15c493b3614ca9f36230548ebfa117af4323c425ac17a7d0b298b71ee2ac65312b
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
## Rails 7.2.3 (October 28, 2025) ##
|
|
2
|
+
|
|
3
|
+
* Fixed compatibility with `redis` gem `5.4.1`
|
|
4
|
+
|
|
5
|
+
*Jean Boussier*
|
|
6
|
+
|
|
7
|
+
* Fixed a possible race condition in `stream_from`.
|
|
8
|
+
|
|
9
|
+
*OuYangJinTing*
|
|
10
|
+
|
|
11
|
+
* Ensure the Postgresql adapter always use a dedicated connection even during system tests.
|
|
12
|
+
|
|
13
|
+
Fix an issue with the Action Cable Postgresql adapter causing deadlock or various weird
|
|
14
|
+
pg client error during system tests.
|
|
15
|
+
|
|
16
|
+
*Jean Boussier*
|
|
17
|
+
|
|
18
|
+
|
|
1
19
|
## Rails 7.2.2.2 (August 13, 2025) ##
|
|
2
20
|
|
|
3
21
|
* No changes.
|
data/README.md
CHANGED
|
@@ -19,6 +19,6 @@ Bug reports for the Ruby on \Rails project can be filed here:
|
|
|
19
19
|
|
|
20
20
|
* https://github.com/rails/rails/issues
|
|
21
21
|
|
|
22
|
-
Feature requests should be discussed on the
|
|
22
|
+
Feature requests should be discussed on the rubyonrails-core forum here:
|
|
23
23
|
|
|
24
24
|
* https://discuss.rubyonrails.org/c/rubyonrails-core
|
|
@@ -166,6 +166,7 @@ module ActionCable
|
|
|
166
166
|
|
|
167
167
|
@reject_subscription = nil
|
|
168
168
|
@subscription_confirmation_sent = nil
|
|
169
|
+
@unsubscribed = false
|
|
169
170
|
|
|
170
171
|
delegate_connection_identifiers
|
|
171
172
|
end
|
|
@@ -201,11 +202,16 @@ module ActionCable
|
|
|
201
202
|
# cleanup with callbacks. This method is not intended to be called directly by
|
|
202
203
|
# the user. Instead, override the #unsubscribed callback.
|
|
203
204
|
def unsubscribe_from_channel # :nodoc:
|
|
205
|
+
@unsubscribed = true
|
|
204
206
|
run_callbacks :unsubscribe do
|
|
205
207
|
unsubscribed
|
|
206
208
|
end
|
|
207
209
|
end
|
|
208
210
|
|
|
211
|
+
def unsubscribed? # :nodoc:
|
|
212
|
+
@unsubscribed
|
|
213
|
+
end
|
|
214
|
+
|
|
209
215
|
private
|
|
210
216
|
# Called once a consumer has become a subscriber of the channel. Usually the
|
|
211
217
|
# place to set up any streams you want this channel to be sending to the
|
|
@@ -88,6 +88,8 @@ module ActionCable
|
|
|
88
88
|
# callback. Defaults to `coder: nil` which does no decoding, passes raw
|
|
89
89
|
# messages.
|
|
90
90
|
def stream_from(broadcasting, callback = nil, coder: nil, &block)
|
|
91
|
+
return if unsubscribed?
|
|
92
|
+
|
|
91
93
|
broadcasting = String(broadcasting)
|
|
92
94
|
|
|
93
95
|
# Don't send the confirmation until pubsub#subscribe is successful
|
|
@@ -75,11 +75,8 @@ module ActionCable
|
|
|
75
75
|
#
|
|
76
76
|
# ## Basic example
|
|
77
77
|
#
|
|
78
|
-
# Unit tests are written
|
|
79
|
-
#
|
|
80
|
-
# 1. Simulate a connection attempt by calling `connect`.
|
|
81
|
-
# 2. Assert state, e.g. identifiers, has been assigned.
|
|
82
|
-
#
|
|
78
|
+
# Unit tests are written by first simulating a connection attempt by calling
|
|
79
|
+
# `connect` and then asserting state, e.g. identifiers, have been assigned.
|
|
83
80
|
#
|
|
84
81
|
# class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
|
|
85
82
|
# def test_connects_with_proper_cookie
|
|
@@ -35,18 +35,17 @@ module ActionCable
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def with_subscriptions_connection(&block) # :nodoc:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
end
|
|
38
|
+
# Action Cable is taking ownership over this database connection, and will
|
|
39
|
+
# perform the necessary cleanup tasks.
|
|
40
|
+
# We purposedly avoid #checkout to not end up with a pinned connection
|
|
41
|
+
ar_conn = ActiveRecord::Base.connection_pool.new_connection
|
|
43
42
|
pg_conn = ar_conn.raw_connection
|
|
44
43
|
|
|
45
44
|
verify!(pg_conn)
|
|
46
45
|
pg_conn.exec("SET application_name = #{pg_conn.escape_identifier(identifier)}")
|
|
47
46
|
yield pg_conn
|
|
48
47
|
ensure
|
|
49
|
-
ar_conn
|
|
48
|
+
ar_conn&.disconnect!
|
|
50
49
|
end
|
|
51
50
|
|
|
52
51
|
def with_broadcast_connection(&block) # :nodoc:
|
|
@@ -164,7 +164,7 @@ module ActionCable
|
|
|
164
164
|
begin
|
|
165
165
|
conn = @adapter.redis_connection_for_subscriptions
|
|
166
166
|
listen conn
|
|
167
|
-
rescue
|
|
167
|
+
rescue *CONNECTION_ERRORS
|
|
168
168
|
reset
|
|
169
169
|
if retry_connecting?
|
|
170
170
|
when_connected { resubscribe }
|
|
@@ -210,7 +210,7 @@ module ActionCable
|
|
|
210
210
|
end
|
|
211
211
|
|
|
212
212
|
if ::Redis::VERSION < "5"
|
|
213
|
-
|
|
213
|
+
CONNECTION_ERRORS = [::Redis::BaseConnectionError].freeze
|
|
214
214
|
|
|
215
215
|
class SubscribedClient
|
|
216
216
|
def initialize(raw_client)
|
|
@@ -244,7 +244,12 @@ module ActionCable
|
|
|
244
244
|
SubscribedClient.new(conn._client)
|
|
245
245
|
end
|
|
246
246
|
else
|
|
247
|
-
|
|
247
|
+
CONNECTION_ERRORS = [
|
|
248
|
+
::Redis::BaseConnectionError,
|
|
249
|
+
|
|
250
|
+
# Some older versions of redis-rb sometime leak underlying exceptions
|
|
251
|
+
RedisClient::ConnectionError,
|
|
252
|
+
].freeze
|
|
248
253
|
|
|
249
254
|
def extract_subscribed_client(conn)
|
|
250
255
|
conn
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: actioncable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.2.
|
|
4
|
+
version: 7.2.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Pratik Naik
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - '='
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: 7.2.
|
|
19
|
+
version: 7.2.3
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - '='
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: 7.2.
|
|
26
|
+
version: 7.2.3
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: actionpack
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 7.2.
|
|
33
|
+
version: 7.2.3
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 7.2.
|
|
40
|
+
version: 7.2.3
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: nio4r
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -153,10 +153,10 @@ licenses:
|
|
|
153
153
|
- MIT
|
|
154
154
|
metadata:
|
|
155
155
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
|
156
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.2.
|
|
157
|
-
documentation_uri: https://api.rubyonrails.org/v7.2.
|
|
156
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.2.3/actioncable/CHANGELOG.md
|
|
157
|
+
documentation_uri: https://api.rubyonrails.org/v7.2.3/
|
|
158
158
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
|
159
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.2.
|
|
159
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.2.3/actioncable
|
|
160
160
|
rubygems_mfa_required: 'true'
|
|
161
161
|
rdoc_options: []
|
|
162
162
|
require_paths:
|