message_bus 4.4.0 → 4.5.0
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/.github/workflows/ci.yml +31 -10
- data/.gitignore +0 -2
- data/CHANGELOG +13 -0
- data/README.md +5 -3
- data/Rakefile +2 -2
- data/docker-compose.yml +1 -1
- data/examples/bench/config.ru +1 -1
- data/examples/chat/Gemfile +1 -1
- data/examples/chat/docker_container/chat.yml +3 -3
- data/examples/minimal/config.ru +1 -1
- data/lib/message_bus/backends/redis.rb +10 -6
- data/lib/message_bus/connection_manager.rb +7 -2
- data/lib/message_bus/rack/middleware.rb +5 -5
- data/lib/message_bus/version.rb +1 -1
- data/message_bus.gemspec +3 -2
- data/package.json +8 -1
- data/pnpm-lock.yaml +1526 -0
- data/spec/fixtures/test/config.ru +1 -1
- data/spec/integration/http_client_spec.rb +1 -1
- data/spec/lib/message_bus/client_spec.rb +1 -1
- data/spec/lib/message_bus/connection_manager_spec.rb +23 -0
- metadata +23 -10
- data/DEV.md +0 -7
- data/package-lock.json +0 -3781
|
@@ -65,7 +65,7 @@ describe MessageBus::HTTPClient do
|
|
|
65
65
|
# that we sleep for the right interval after failure
|
|
66
66
|
sleep 0.5
|
|
67
67
|
|
|
68
|
-
assert_match(/Errno::ECONNREFUSED|SocketError/, fake.string)
|
|
68
|
+
assert_match(/Errno::ECONNREFUSED|SocketError|Socket::ResolutionError/, fake.string)
|
|
69
69
|
ensure
|
|
70
70
|
$stderr = original_stderr
|
|
71
71
|
end
|
|
@@ -59,7 +59,7 @@ describe MessageBus::Client do
|
|
|
59
59
|
@client.use_chunked = true
|
|
60
60
|
r, w = IO.pipe
|
|
61
61
|
@client.io = w
|
|
62
|
-
@client.headers = { "
|
|
62
|
+
@client.headers = { "content-type" => "application/json; charset=utf-8" }
|
|
63
63
|
@client << MessageBus::Message.new(1, 1, '/test', 'test')
|
|
64
64
|
@client << MessageBus::Message.new(2, 2, '/test', "a|\r\n|\r\n|b")
|
|
65
65
|
|
|
@@ -90,6 +90,29 @@ describe MessageBus::ConnectionManager do
|
|
|
90
90
|
@manager.notify_clients(m)
|
|
91
91
|
assert_nil @resp.sent
|
|
92
92
|
end
|
|
93
|
+
|
|
94
|
+
it "should prune empty channel and site_id entries from subscriptions after removing clients" do
|
|
95
|
+
client1 = MessageBus::Client.new(client_id: "abc", user_id: 1, site_id: 20)
|
|
96
|
+
client1.subscribe('test', -1)
|
|
97
|
+
@manager.add_client(client1)
|
|
98
|
+
|
|
99
|
+
client2 = MessageBus::Client.new(client_id: "def", user_id: 2, site_id: 20)
|
|
100
|
+
client2.subscribe('test', -1)
|
|
101
|
+
@manager.add_client(client2)
|
|
102
|
+
|
|
103
|
+
@manager.remove_client(client1)
|
|
104
|
+
|
|
105
|
+
subscriptions = @manager.instance_variable_get(:@subscriptions)
|
|
106
|
+
assert subscriptions[client1.site_id].key?('test')
|
|
107
|
+
assert subscriptions[client1.site_id]['test'].include?(client2.client_id)
|
|
108
|
+
refute subscriptions[client1.site_id]['test'].include?(client1.client_id)
|
|
109
|
+
|
|
110
|
+
@manager.remove_client(client2)
|
|
111
|
+
|
|
112
|
+
subscriptions = @manager.instance_variable_get(:@subscriptions)
|
|
113
|
+
assert_nil subscriptions.dig(client1.site_id, 'test')
|
|
114
|
+
assert_nil subscriptions[client1.site_id]
|
|
115
|
+
end
|
|
93
116
|
end
|
|
94
117
|
|
|
95
118
|
describe MessageBus::ConnectionManager, "notifying and subscribing concurrently" do
|
metadata
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: message_bus
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 4.
|
|
4
|
+
version: 4.5.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sam Saffron
|
|
8
8
|
bindir: bin
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: rack
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
15
15
|
requirements:
|
|
16
|
-
- - "
|
|
16
|
+
- - "~>"
|
|
17
17
|
- !ruby/object:Gem::Version
|
|
18
|
-
version:
|
|
18
|
+
version: '3'
|
|
19
19
|
type: :runtime
|
|
20
20
|
prerelease: false
|
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
22
22
|
requirements:
|
|
23
|
-
- - "
|
|
23
|
+
- - "~>"
|
|
24
24
|
- !ruby/object:Gem::Version
|
|
25
|
-
version:
|
|
25
|
+
version: '3'
|
|
26
26
|
- !ruby/object:Gem::Dependency
|
|
27
27
|
name: redis
|
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -164,7 +164,7 @@ dependencies:
|
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '0'
|
|
166
166
|
- !ruby/object:Gem::Dependency
|
|
167
|
-
name:
|
|
167
|
+
name: pitchfork
|
|
168
168
|
requirement: !ruby/object:Gem::Requirement
|
|
169
169
|
requirements:
|
|
170
170
|
- - ">="
|
|
@@ -205,6 +205,20 @@ dependencies:
|
|
|
205
205
|
- - ">="
|
|
206
206
|
- !ruby/object:Gem::Version
|
|
207
207
|
version: '0'
|
|
208
|
+
- !ruby/object:Gem::Dependency
|
|
209
|
+
name: method_source
|
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
|
211
|
+
requirements:
|
|
212
|
+
- - ">="
|
|
213
|
+
- !ruby/object:Gem::Version
|
|
214
|
+
version: '0'
|
|
215
|
+
type: :development
|
|
216
|
+
prerelease: false
|
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
218
|
+
requirements:
|
|
219
|
+
- - ">="
|
|
220
|
+
- !ruby/object:Gem::Version
|
|
221
|
+
version: '0'
|
|
208
222
|
- !ruby/object:Gem::Dependency
|
|
209
223
|
name: oj
|
|
210
224
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -260,7 +274,6 @@ files:
|
|
|
260
274
|
- ".prettierrc"
|
|
261
275
|
- ".rubocop.yml"
|
|
262
276
|
- CHANGELOG
|
|
263
|
-
- DEV.md
|
|
264
277
|
- Dockerfile
|
|
265
278
|
- Gemfile
|
|
266
279
|
- Guardfile
|
|
@@ -311,8 +324,8 @@ files:
|
|
|
311
324
|
- lib/message_bus/timer_thread.rb
|
|
312
325
|
- lib/message_bus/version.rb
|
|
313
326
|
- message_bus.gemspec
|
|
314
|
-
- package-lock.json
|
|
315
327
|
- package.json
|
|
328
|
+
- pnpm-lock.yaml
|
|
316
329
|
- spec/assets/SpecHelper.js
|
|
317
330
|
- spec/assets/message-bus.spec.js
|
|
318
331
|
- spec/fixtures/test/Gemfile
|
|
@@ -354,7 +367,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
354
367
|
- !ruby/object:Gem::Version
|
|
355
368
|
version: '0'
|
|
356
369
|
requirements: []
|
|
357
|
-
rubygems_version: 3.6.
|
|
370
|
+
rubygems_version: 3.6.9
|
|
358
371
|
specification_version: 4
|
|
359
372
|
summary: ''
|
|
360
373
|
test_files: []
|